2017-10-06 54 views
1
>>> a=os.listdir('.') 
>>> a 
['arabic??.exe', 'asd.exe', 'chinese??.exe', 'cyrilic??.exe', 'french\xe7\xe9\xfc.exe', 'german\xe4\xdf\xfc.exe', 'registred\xae\xa9.exe', 'sandbox.py', 'spanish\xc1\xcd\xd3.exe'] 
>>> for each in a: 
... os.system(os.getcwd()+'\\'+each) 
... 
The system cannot find the path specified. 

我想打開一些文件與怪異字符,但上面的代碼只適用於拉丁語言。我能做些什麼來獲得所有文件的正確編碼並正確打開它們?或者是否有解決方法?Python:我如何從文件名得到正確的編碼

旁註,上述邏輯上順暢運行Linux系統。

文件名: cyrilicЧБ;中國伊艾;frenchçéü;阿拉伯شص; spanishÁÍÓ.exe;registred®©.EXE;germanäßü.exe

回答

0

工作,如果你傳遞一個Unicode字符串的目錄路徑,例如:

os.listdir(u'.') 

編輯#0:

您還需要將以下標題添加到您的Python腳本中:

# -*- coding: utf-8 -*- 

你可以閱讀更多關於此這裏:https://www.python.org/dev/peps/pep-0263/

+0

它給了我這個錯誤時,我把它作爲統一: 回溯(最近通話最後一個): 文件「」,2號線,在 UnicodeEncodeError:「ASCII 「編解碼器不能在41-42位字符進行編碼:有序不在範圍內(128) 如果我離開它,因爲它至少傳遞參數給使用os.system – xRow

+0

你指定編碼爲您的Python腳本文件字節?請檢查更新後的答案。 – schaazzz

+0

是的,我試圖與編碼線,還試圖用編碼.encode(sys.getfilesystemencoding(名稱),但它並沒有明顯的區別,我有種陷在這裏,感謝您的幫助反正。 – xRow

相關問題