Python 忽略文件名編碼的方法
問題
你想使用原始文件名執(zhí)行文件的I/O操作,也就是說文件名并沒有經(jīng)過系統(tǒng)默認編碼去解碼或編碼過。
解決方案
默認情況下,所有的文件名都會根據(jù) sys.getfilesystemencoding() 返回的文本編碼來編碼或解碼。比如:
>>> sys.getfilesystemencoding()’utf-8’>>>
如果因為某種原因你想忽略這種編碼,可以使用一個原始字節(jié)字符串來指定一個文件名即可。比如:
>>> # Wrte a file using a unicode filename>>> with open(’jalapexf1o.txt’, ’w’) as f:... f.write(’Spicy!’)...6>>> # Directory listing (decoded)>>> import os>>> os.listdir(’.’)[’jalapeño.txt’]>>> # Directory listing (raw)>>> os.listdir(b’.’) # Note: byte string[b’jalapenxccx83o.txt’]>>> # Open file with raw filename>>> with open(b’jalapenxccx83o.txt’) as f:... print(f.read())...Spicy!>>>
正如你所見,在最后兩個操作中,當你給文件相關(guān)函數(shù)如 open() 和 os.listdir() 傳遞字節(jié)字符串時,文件名的處理方式會稍有不同。
討論
通常來講,你不需要擔(dān)心文件名的編碼和解碼,普通的文件名操作應(yīng)該就沒問題了。 但是,有些操作系統(tǒng)允許用戶通過偶然或惡意方式去創(chuàng)建名字不符合默認編碼的文件。 這些文件名可能會神秘地中斷那些需要處理大量文件的Python程序。
讀取目錄并通過原始未解碼方式處理文件名可以有效的避免這樣的問題, 盡管這樣會帶來一定的編程難度。
關(guān)于打印不可解碼的文件名,請參考
以上就是Python 忽略文件名編碼的方法的詳細內(nèi)容,更多關(guān)于Python 忽略文件名編碼的資料請關(guān)注好吧啦網(wǎng)其它相關(guān)文章!
相關(guān)文章:
1. idea導(dǎo)入maven項目的方法2. 淺談JavaScript宏任務(wù)和微任務(wù)執(zhí)行順序3. vue+elementUI下拉框回顯問題及解決方式4. idea設(shè)置代碼格式化的方法步驟5. docker /var/lib/docker/aufs/mnt 目錄清理方法6. docker容器調(diào)用yum報錯的解決辦法7. idea環(huán)境下Maven無法正常下載pom中配置的包問題8. Python幾種常見算法匯總9. idea設(shè)置自動導(dǎo)入依賴的方法步驟10. 使用IntelliJ IDEA 配置安卓(Android)開發(fā)環(huán)境的教程詳解(新手必看)

網(wǎng)公網(wǎng)安備