2 qingyuanluofeng qingyuanluofeng 于 2015.07.10 11:10 提问

读取python遍历中文目录得到的文件路径报错 2C

各位朋友们好,我是一名python新手,现在遇到一个问题,恳请各位朋友们能指点一下我。
我的环境是:ubuntu14.04系统,python2.7
用python遍历一个目录,目录层次结构如下:
这是主目录: /home/chaoma/superboard/mydata/input/production
主目录下的目录层次结构如下
--超级画板教学资源_全处理_772
-- Z+Z资源库
--初中数学资源库
--1有理数
---1.1数的分类
-- 0.mp4
-- name.txt
……
--2一元一次方程
…..
--动态解析高考数学综合题
--第一章基本函数
--第四节
--06福建理21
--name.txt
--0.mp4
--拓展练习4.1
….
--第五节
……
--第二章三角函数
…….
……
--学生作品集合_全处理_52
………

我想实现的功能:找到所有含有0.mp4文件的父目录,并读取该父目录下面的name.txt文件
因此我写了以下的遍历函数来实现这一功能:
def visitDir_walk(path , sFileSuffix):
codedetect = chardet.detect(path)["encoding"]
path = unicode(path , codedetect)
fileNames = list()
for root,dirs,files in os.walk(path):
for i in range(0 , len(files)):
file = files[i]
if file.endswith(sFileSuffix):
sFileName = os.path.join(root , file)
#这边返回的应该是包含视频文件的父目录,也就是学生作品目录
realFileName = os.path.split(os.path.abspath(sFileName))[0]
fileNames.append( unicode(realFileName,”gbk”) )
return fileNames

def main():
sProductionInputPath = “/home/chaoma/superboard/mydata/input/production”
dir_production_list = visitDir_walk(sProductionInputPath , ".mp4")
#拼接name.txt的路径
for dir in dir_production_list:
nameFile = os.path.join(dir , "name.txt")
fout = codecs.open(nameFile , "w" , "utf-8")
#截取出路径中的文件名作为需要的内容,并写入文件
fout.write(os.path.split(path)[1])

fout.close()
main()

但是执行之后却报错了,报错如下:
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个回答

dcxy0
dcxy0   Ds   Rxr 2015.07.10 11:33

尽量不要用中文,然后可以把你的一部分文件传到百度网盘,帮你看看

kangble
kangble   2015.07.13 10:37

如果是字符编码的问题,是否可以尝试
import sys
reload(sys)
sys.setdefaultencoding('utf-8')

或者干脆别遍历了。执行下搜索程序,找到对应的文件,依次打开
relation_file = os.system('find . -name "name.txt" ')

CSDNXIAOD
CSDNXIAOD   2015.07.16 14:48

python 遍历路径删除多余文件
根据路径遍历目录下所有文件File类
HDFS 读取、写入、遍历目录获取文件全路径
----------------------biu~biu~biu~~~在下问答机器人小D,这是我依靠自己的聪明才智给出的答案,如果不正确,你来咬我啊!

Csdn user default icon
上传中...
上传图片
插入图片