问题描述
- python中的os.walk函数为什么遍历带有中文的路径时就失败?
- python中的os.walk函数遍历带有中文的路径时报错如下:
Traceback (most recent call last): File ""/usr/lib/python2.7/threading.py"" line 810 in__bootstrap_inner self.run() File ""Store.py"" line 79 in run dir_production_list =FileOperation.visitDir_walk(self.conf.sProductionInputPath .mp4"") File ""/home/chaoma/superboard/Store/FileOperation.py"" line55 in visitDir_walk for rootdirsfiles in os.walk(path): File ""/usr/lib/python2.7/os.py"" line 284 in walk if isdir(join(top name)): File ""/usr/lib/python2.7/posixpath.py"" line 80 in join path += '/' + bUnicodeDecodeError:'utf8' codec can't decode byte 0xb3 in position 1: invalid start byte
我已经加上了:
- coding:utf-8 -
import sys
reload(sys)
sys.setdefaultencoding(""utf-8"")
还是没用
另外我想问各位大神们一下:os.walk()中传入的路径是str类型的字符串还是unicode类型的,或者说两个类型都可以。
十分感谢,希望大神们指点一二。
解决方案
是在控制台中执行的脚本吗,用一个编辑器等,比如pyCharm
还有可以试试其他编码
#-*- coding:gbk -*-
解决方案二:
看下是显示为乱码还是真的是乱码,一些开发环境本身不支持中文。
解决方案三:
os.walk()中传入的路径是str类型的字符串还是unicode类型的,或者说两个类型都可以吗?求各位朋友指点一下,谢谢
解决方案四:
在window下,所有与os相关的都应该是gbk编码的str.
解决方案五:
文件头部的编码格式声明,只是告诉解释器,本文件是什么编码格式的,与你这个问题并无直接关系。os.walk()中应该传str还是unicode,这个问题你应该去查下文档,而不是靠猜。试一下这样做吧:os.walk(u'含中文的路径'.encode('gbk'))
解决方案六:
确实没有直接说是不是str,但是仔细从上下文来分析,是可以判断出是str类型的,在- coding:utf-8 -下,你用如下的方式遍历是没问题的:
os.walk(u'E:中文路径'.encode('gbk'))
时间: 2024-11-03 22:06:32