程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> 讀中文目錄亂碼-python讀取中文目錄出現亂碼

讀中文目錄亂碼-python讀取中文目錄出現亂碼

編輯:編程綜合問答
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如何讀取中文目錄而不亂碼嗎,十分感謝

最佳回答:


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

你直接把路徑都用utf8編碼,然後再處理

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved