天地一扁舟 2015-04-20 15:06 采纳率: 0%
浏览 5194
已采纳

python读取中文目录出现乱码

问题是这样的:用python写的程序,去读取一些目录和文件进行处理:比如说其中的中文目录名如下:
示波器,曲线,卡哇伊小屋等等。然后比如示波器文件夹下面有下面文件:0.htm,0.png,示波器.mp4

我写的目录和文件访问程序如下:
#根据绝对路径获取目录下面所有的文件的绝对路径,文本信息全部用txt文件,图片信息全部用png文件,视频信息
def getFiles_fromAbsPath(inputDir):
curPath = os.getcwd()
# 靠必须要拆分成多个路径,否则不能通过
os.chdir(inputDir)
#主要是为了获取sequence.txt文件(如果问题是这样的:用python写的程序,去读取一些目录和文件进行处理:比如说其中的中文目录名如下:
示波器,曲线,卡哇伊小屋等等。然后比如示波器文件夹下面有下面文件:0.htm,0.png,示波器.mp4

我写的目录和文件访问程序如下:
#根据绝对路径获取目录下面所有的文件的绝对路径,文本信息全部用txt文件,图片信息全部用png文件,视频信息
def getFiles_fromAbsPath(inputDir):
curPath = os.getcwd()
# 靠必须要拆分成多个路径,否则不能通过
os.chdir(inputDir)
#主要是为了获取sequence.txt文件(如果存在的话)
textInputDirs = [x for x in os.listdir('.') if os.path.isfile(x) and x.endswith("sequence.txt")]
pictureInputDirs = [x for x in os.listdir('.') if os.path.isfile(x) and x.endswith(".png") ]
#htm只需要返回0.htm进行处理
htmInputDirs = [x for x in os.listdir('.') if os.path.isfile(x) and x.endswith("0.htm") ]
#获取视频的地址
videoInputDirs = [x for x in os.listdir('.') if os.path.isfile(x) and x.endswith(".mp4") ]
#print inputDirs
realTextInputDirs = []
realPictureInputDirs = []
realHtmInputDirs = []
realVideoInputDirs = []
for path in textInputDirs:
realTextInputDirs.append(os.path.abspath(path))
for path in pictureInputDirs:
realPictureInputDirs.append(os.path.abspath(path))
for path in htmInputDirs:
#realHtmInputDirs.append(os.path.abspath(path))
realHtmInputDirs.append(os.path.join(inputDir , path))
for path in videoInputDirs:
realVideoInputDirs.append(os.path.abspath(path))

os.chdir(curPath)
sequenceFileName = ""
videoFileName = ""
if realTextInputDirs:
    sequenceFileName = realTextInputDirs[0]
if realVideoInputDirs:
    videoFileName = realVideoInputDirs[0]
return sequenceFileName,realPictureInputDirs,realHtmInputDirs[0] , videoFileName

但是用0.htm得到的绝对路径去读取该文件的的时候
fr = open(sFileName, "r"),这个sFileName是读取的0,htm的绝对路径,但是发生错误,看了调试信息:
​这个时候文件的路径变成了:
'E:\MyProject\SVN_Project\Drawingboard_local\model\mydata\input\production\һ�ɳ���0.htm'
中文的路径:"示波器"没了
正确的路径是:
'E:\MyProject\SVN_Project\Drawingboard_local\model\mydata\input\production\示波器\0.htm'
而且乱码导致了:"示波器"和它后面的"\"都在一起了,所以读0.htm文件立刻程序崩溃。

我在python文件中加了:

- coding: utf-8 -

import sys
reload(sys)
sys.setdefaultencoding("utf-8")
还是没有用

朋友们,能指导一下:python如何读取中文目录而不乱码吗,十分感谢

  • 写回答

3条回答 默认 最新

  • oyljerry 2015-04-20 23:36
    关注

    http://blog.csdn.net/zhaoxjzhao/article/details/7439159

    你直接把路径都用utf8编码,然后再处理

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 如何用stata画出文献中常见的安慰剂检验图
  • ¥15 c语言链表结构体数据插入
  • ¥40 使用MATLAB解答线性代数问题
  • ¥15 COCOS的问题COCOS的问题
  • ¥15 FPGA-SRIO初始化失败
  • ¥15 MapReduce实现倒排索引失败
  • ¥15 ZABBIX6.0L连接数据库报错,如何解决?(操作系统-centos)
  • ¥15 找一位技术过硬的游戏pj程序员
  • ¥15 matlab生成电测深三层曲线模型代码
  • ¥50 随机森林与房贷信用风险模型