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風格的'/',而不是'\'。