我見過很多類似的問題,但都沒有解決我的問題。我試圖打開使用Unicode文件名的文件,但得到的錯誤:python [Errno 22] invalid mode('wb')or filename:u'Escuela Sab xe1tica Part 2.doc'
[錯誤22]無效的模式(「WB」)或文件名:u'Escuela審計局\ xe1tica部分2.doc」
我試過使用open,codecs.open和io.open來打開文件(我認爲這對於二進制文件來說並不重要,但不管)。沒有骰子。我覺得線索可能是文件名:
u'Escuela審計局\ xe1tica部分2.doc」
打印時,此文件名工作正常:
埃斯庫埃拉Sabática部分2.doc
但我認爲這很奇怪,錯誤將它打印爲u'... \ xe1 ...'而不是u'... \ uxxx ...'。我仍然不熟悉unicode,所以這是我的懷疑。我試過在沒有成功打開之前編碼和解碼文件名('utf-8')。
編輯:版本是python 2.7.3。代碼片段:
with open(to_path, "wb") as to_file:
to_file.write(f.read())
錯誤可追溯到「開放」線,代碼適用於文件,而不在文件名中的Unicode。
是什麼版本的Python?你應該發佈你正在運行的代碼片段,這會引發這個錯誤。 – roeland
您應該_ALLways_提及帶有Unicode問題的Python版本(最好使用適當的標籤),因爲Python 3中的Unicode處理與Python 2非常不同。而且對於這個問題,瞭解操作系統和文件系統也很好。 FWIW,Windows NTFS文件系統使用UTF-16編碼。 –
上面添加的版本和代碼片段。 – hawkjo