中文乱码-读取python遍历中文目录得到的文件路径报错

问题描述

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

各位朋友们好,我是一名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/u8d85u7ea7u753bu677fu6559u5b66u8d44u6e90_u5168u5904u7406_772/u52a8u6001u89e3u6790u9ad8u8003u6570u5b66u7efcu5408u9898/u7b2cu4e00u7ae0u57fau672cu51fdu6570/u7b2cu56dbu8282/06u798fu5efau740621/name.txt'
打印这个报错的路径得到:
/home/chaoma/superboard/mydata/input/production/超级画板教学资源_全处理_772/动态解析高考数学综合题/第一章基本函数/第四节/06福建理21/name.txt
这个文件路径是存在的却报错,不知道为什么。难道是路径是unicode类型就不能识别吗?
恳请各位朋友们能指点我一下,十分感谢。

解决方案

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

解决方案二:

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

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

解决方案三:

python 遍历路径删除多余文件
根据路径遍历目录下所有文件File类
HDFS 读取、写入、遍历目录获取文件全路径

时间: 2025-01-01 11:27:07

中文乱码-读取python遍历中文目录得到的文件路径报错的相关文章

java中文乱码之解决URL中文乱码问题的方法_java

我们主要通过两种形式提交向服务器发送请求:URL.表单.而表单形式一般都不会出现乱码问题,乱码问题主要是在URL上面.通过前面几篇博客的介绍我们知道URL向服务器发送请求编码过程实在是实在太混乱了.不同的操作系统.不同的浏览器.不同的网页字符集,将导致完全不同的编码结果.如果程序员要把每一种结果都考虑进去,是不是太恐怖了?有没有办法,能够保证客户端只用一种编码方法向服务器发出请求? 有!这里我主要提供以下几种方法 一.javascript使用javascript编码不给浏览器插手的机会,编码之后

python清除指定目录内所有文件中script的方法

  本文实例讲述了python清除指定目录内所有文件中script的方法.分享给大家供大家参考.具体如下: 将脚本存储为stripscripts.py 调用语法 : python stripscripts.py 使用范例 : python stripscripts.py d:myfiles ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37

Android如何遍历特定目录下所有文件

第一个案例为大家分享了Android遍历特定目录下所有文件,包含子目录的,并删除最新创建的. private boolean deleteLastFromFloder(String path) { boolean success = false; try { ArrayList<File> images = new ArrayList<File>(); getFiles(images, path); File latestSavedImage = images.get(0); if

在Python中使用glob模块查找文件路径的方法

  这篇文章主要介绍了在Python中使用glob模块查找文件路径的方法,使用模块其中的iglob方法实现起来非常简单,需要的朋友可以参考下 glob模块是最简单的模块之一,内容非常少.用它可以查找符合特定规则的文件路径名.跟使用windows下的文件搜索差不多.查找文件只用到三个匹配符:"*", "?", "[]"."*"匹配0个或多个字符;"?"匹配单个字符;"[]"匹配指定范围内的

python输出当前目录下index.html文件路径的方法

  这篇文章主要介绍了python输出当前目录下index.html文件路径的方法,涉及Python操作目录的相关技巧,需要的朋友可以参考下: ? 1 2 3 4 import os import sys path = os.path.join(os.path.dirname(sys.argv[0]),'index.html') print path 希望本文所述对大家的Python程序设计有所帮助.

path-java 遍历hdfs文件夹报错!!急!!急

问题描述 java 遍历hdfs文件夹报错!!急!!急 FileStatus[] srcFileStatus = hdfs.listStatus(new Path(srcPath));执行到这句话的时候会报如下错: java.lang.NullPointerException at org.apache.hadoop.fs.Path.(Path.java:104) at org.apache.hadoop.fs.Path.makeQualified(Path.java:440) at org.a

请问下如何获取网站路径在本机路径的前一个目录里的文件路径?

问题描述 Server.MapPath("../DataBase/MyBook.mdb");我这样要出错,请问该怎么样用? 解决方案 解决方案二:stringPath=Server.MapPath("../DataBase/")+"/MyBook.mdb";解决方案三:还是一样,提示:未能映射路径"/DataBase/解决方案四:Server.MapPath("/DataBase/MyBook.mdb");取得物理全

实战mysql导出中文乱码及phpmyadmin导入中文乱码的解决方法_php技巧

一直不用这个phpmyadmin,在本机也是用navicat,总感觉phpmyadmin速度较慢.这回不行了,没有独立主机,只好用人家给的phpmyadmin了. 第一步:本地数据导出sql文件.心想这对于navicat小事一桩.直接在数据库上右键"转储sql"(如图1),哗哗,十几秒的时间导出成功. (图1:navicat下对整个数据库转sql) 用记事本打开一看,傻眼了.中文全是乱码.咋回事呢?搜索了一下,改变什么连接属性啥的.不管用.试着在单张表上,转储sql,嘿,中文正常.但是

Get中文乱码IE浏览器Get中文乱码解决方案_jquery

Get中文乱码问题解决方案: 修改Tomcat根目录下conf / server.xml文件,代码如下: 复制代码 代码如下: <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8" /> 但是,使用IE浏览器会发现,中文乱码问题仍然存