python 用os.walk()遍历目录时,中文文件名显示为乱码

#-*- coding:utf-8 -*-
import os,sys,string
export=" "
for root,dirs,files in os.walk(r'E:\testpython'):
export+="%s;%s;%s\n" %(root,dirs,files)

print export

该目录中有个文件名为“新建文本文档 (2).sql “的文件,但该程序返回结果中,该文件名显示为乱码:\xd0\xc2\xbd\xa8\xce\xc4\xb1\xbe\xce\xc4\xb5\xb5 (2).sql,请问大家该怎么解决呢,我看了好多关于python中文编码问题的文章,但是还是无法解决。

第1个回答  2011-06-20
#coding=gb18030

import os,sys

def processunicode(value): #定义一个处理unicode类型字符串的函数
v1=''
for a in value:
if type(a)=='unicode':
v1=v1+str(a.encoe('gb18030'))
else:
v1=v1+str(a)
return v1

print processunicode(export) #把要打印的参数传给该函数,并打印出来
第2个回答  2011-06-17
import sys
reload(sys)
sys.setdefaultencoding('utf-8')追问

这种方法没有用啊,我试了,还是原来那样

追答

你是只遍历文件 还是要遍历目录和文件啊
root dirs files 是list 直接转字符串肯定有问题

追问

是遍历目录和文件

追答

import os
for root,dirs,files in os.walk(r'E:\testpython'):
for dir in dirs:
print os.path.join(root,dir)
for file in files:
print os.path.join(root,file)

本回答被提问者采纳
相似回答