[英]Unicode error unzipping file using Python .extractall
我有我的 zip 文件,其中有一些文件要解壓縮。 我的函數運行良好,直到我的某些文件的名稱中包含 Unicode,如下所示:
- myfile.wav
- myfile2.wav
- my§ile.wav
當我嘗試使用此功能解壓縮時
with closing(z), zipfile.ZipFile(io.BytesIO(z.content)) as myzip:
myzip.extractall(local_path)
我收到一個 Unicode 錯誤。
我該怎么做才能更正我的文件名?
您應該在傳遞給extractall 方法之前解碼您的文件。
with closing(z), zipfile.ZipFile(io.BytesIO(z.content)) as myzip:
local_path = local_path.decode('utf-8')
myzip.extractall(local_path)
閱讀模塊中的文檔,他們明確指出:
ZIP 文件沒有正式的文件名編碼。 如果您有 unicode 文件名,則必須在將它們傳遞給 '() 之前將它們轉換為所需編碼的字節字符串。 WinZip 將所有文件名解釋為以 CP437(也稱為 DOS 拉丁語)編碼。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.