溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python如何忽略文件名編碼

發布時間:2020-08-01 14:19:53 來源:億速云 閱讀:171 作者:小豬 欄目:開發技術

這篇文章主要為大家展示了Python如何忽略文件名編碼,內容簡而易懂,希望大家可以學習一下,學習完之后肯定會有收獲的,下面讓小編帶大家一起來看看吧。

問題

你想使用原始文件名執行文件的I/O操作,也就是說文件名并沒有經過系統默認編碼去解碼或編碼過。

解決方案

默認情況下,所有的文件名都會根據 sys.getfilesystemencoding() 返回的文本編碼來編碼或解碼。比如:

>>> sys.getfilesystemencoding()
'utf-8'
>>>

如果因為某種原因你想忽略這種編碼,可以使用一個原始字節字符串來指定一個文件名即可。比如:

>>> # Wrte a file using a unicode filename
>>> with open('jalape\xf1o.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'jalapen\xcc\x83o.txt']

>>> # Open file with raw filename
>>> with open(b'jalapen\xcc\x83o.txt') as f:
...  print(f.read())
...
Spicy!
>>>

正如你所見,在最后兩個操作中,當你給文件相關函數如 open() os.listdir() 傳遞字節字符串時,文件名的處理方式會稍有不同。

討論

通常來講,你不需要擔心文件名的編碼和解碼,普通的文件名操作應該就沒問題了。 但是,有些操作系統允許用戶通過偶然或惡意方式去創建名字不符合默認編碼的文件。 這些文件名可能會神秘地中斷那些需要處理大量文件的Python程序。

讀取目錄并通過原始未解碼方式處理文件名可以有效的避免這樣的問題, 盡管這樣會帶來一定的編程難度。

以上就是關于Python如何忽略文件名編碼的內容,如果你們有學習到知識或者技能,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女