读取python遍历中文目录得到的文件路径报错 20
各位朋友们好,我是一名python新手,现在遇到一个问题,恳请各位朋友们能指点一下我。我的环境是:ubuntu14.04系统,python2.7用python遍历一个目录...
各位朋友们好,我是一名python新手,现在遇到一个问题,恳请各位朋友们能指点一下我。
我的环境是:ubuntu14.04系统,python2.7
用python遍历一个目录,目录层次结构如下:
这是主目录: /home/chaoma/superboard/mydata/input/production
我想实现的功能:找到所有含有0.mp4文件的父目录,并读取该父目录下面的name.txt文件
因此我写了os.walk遍历函数来获取路径,之后再拼接:name.txt 来实现这一功能:
但是执行之后却报错了,报错如下:
fout = codecs.open(nameFile , "w" , "utf-8")
File "/usr/lib/python2.7/codecs.py", line 878, in open
file = __builtin__.open(filename, mode, buffering)
IOError: [Errno 2] No such file or directory: u'/home/chaoma/superboard/mydata/input/production/\u8d85\u7ea7\u753b\u677f\u6559\u5b66\u8d44\u6e90_\u5168\u5904\u7406_772/\u52a8\u6001\u89e3\u6790\u9ad8\u8003\u6570\u5b66\u7efc\u5408\u9898/\u7b2c\u4e00\u7ae0\u57fa\u672c\u51fd\u6570/\u7b2c\u56db\u8282/06\u798f\u5efa\u740621/name.txt'
打印这个报错的路径得到:
/home/chaoma/superboard/mydata/input/production/超级画板教学资源_全处理_772/动态解析高考数学综合题/第一章基本函数/第四节/06福建理21/name.txt
这个文件路径是存在的却报错,不知道为什么。难道是路径是unicode类型就不能识别吗?
恳请各位朋友们能指点我一下,十分感谢。 展开
我的环境是:ubuntu14.04系统,python2.7
用python遍历一个目录,目录层次结构如下:
这是主目录: /home/chaoma/superboard/mydata/input/production
我想实现的功能:找到所有含有0.mp4文件的父目录,并读取该父目录下面的name.txt文件
因此我写了os.walk遍历函数来获取路径,之后再拼接:name.txt 来实现这一功能:
但是执行之后却报错了,报错如下:
fout = codecs.open(nameFile , "w" , "utf-8")
File "/usr/lib/python2.7/codecs.py", line 878, in open
file = __builtin__.open(filename, mode, buffering)
IOError: [Errno 2] No such file or directory: u'/home/chaoma/superboard/mydata/input/production/\u8d85\u7ea7\u753b\u677f\u6559\u5b66\u8d44\u6e90_\u5168\u5904\u7406_772/\u52a8\u6001\u89e3\u6790\u9ad8\u8003\u6570\u5b66\u7efc\u5408\u9898/\u7b2c\u4e00\u7ae0\u57fa\u672c\u51fd\u6570/\u7b2c\u56db\u8282/06\u798f\u5efa\u740621/name.txt'
打印这个报错的路径得到:
/home/chaoma/superboard/mydata/input/production/超级画板教学资源_全处理_772/动态解析高考数学综合题/第一章基本函数/第四节/06福建理21/name.txt
这个文件路径是存在的却报错,不知道为什么。难道是路径是unicode类型就不能识别吗?
恳请各位朋友们能指点我一下,十分感谢。 展开
3个回答
展开全部
这是因为路径里面包含中文的原因:
linux的系统字符编码默认为utf-8,而要搜索的文件路径nameFile是Unicode,需要进行解码成unicode,因此作如下修改:
fout = codecs.open(nameFile.encode("utf-8") , "w" , "utf-8"
当然,另外一种方法就是修改为英文的路径;
关于编码和解码的知识,请参考:http://www.cnblogs.com/qiernonstop/p/3634462.html
展开全部
linux 的系统字符编码通常为utf-8,你的nameFile文件名称似乎是经过解码成unicode的,需要在按系统字符集编码进行处理:
OS_CHARSET = 'utf-8'
...
fout = codecs.open(nameFile.encode(OS_CHARSET), 'w', 'utf-8')
...
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
建议你把代码都贴出来, 另外,你的文件系统本身是什么编码? 即你的文件系统里那些中文文件、目录的名字本身用的什么编码。恐怕不是 utf-8 吧
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询