[python IO學習篇] [打開包含中文路徑的文件]


https://my.oschina.net/mcyang000/blog/289460
 
打開路徑含有中文的文件時,要注意:
1 在windows對文件名編碼是采用gbk等進行編碼保存,所以要將文件路徑先解碼,在按gbk編碼: 
字符串--解碼成unicode--編碼(注意str和unicode的轉換)

with open(r"D:\我的文檔\桌面\python\config.ini".decode('utf8').encode('gbk'),'rb') as f:
print f.read()

 
或者采用
#coding=utf-8 #當然這里要在前面設置系統的編碼方式
with open(ur"D:\我的文檔\桌面\python\config.ini".encode('gbk'),'rb') as f:  
 
或者with open(ur"D:\我的文檔\桌面\python\config.ini",'rb') as f:
 
 
 
 
 
摘要: 在windows使用gbx(gb2312,gbk,gb18030我也不知道是哪個)對文件名及文件路徑進行編碼保存。打開文件的函數中使用諸如open(filename.encode('gbk'))可以很好的解決。另外路徑分隔符要寫Unix風格的'/',不要寫'\'

windows使用gbx(gb2312,gbk,gb18030我也不知道是哪個)對文件名及文件路徑進行編碼保存。打開文件的函數中使用諸如open(filename.encode('gbk'))可以很好的解決。

 

#coding:utf8 if __name__ == '__main__': srcfile = r"D:/測試路徑/測試文件.txt" f = open(srcfile.decode('utf8').encode('gbk')) for text in f.readlines(): print text.decode('gbk') f.close()

或者:

#coding:utf8 if __name__ == '__main__': srcfile = u"D:/測試路徑/測試文件.txt" f = open(srcfile.encode('gbk')) for text in f.readlines(): print text.decode('gbk') f.close()
上述兩種方法均可。

另外,不要下面被這句話干擾:

print text.decode('gbk')
它只表示文件內容是用gbk編碼的。更多內容可見  http://my.oschina.net/iuranus/blog/262914 

補充說明:這里這樣寫也是可以打開的:

srcfile = u"D:/測試路徑/測試文件.txt" f = open(srcfile)
但是在使用opencv庫時,cv2.imread(srcfile),srcfile必須以gbk編碼(srcfile.encode('gbk'))才能打開,同時要注意是unix風格的'/',而不是'\'。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM