Python zipfile 編碼問題


zipfile默認對於文件名編碼只識別cp437和utf-8

對於采用其他編碼方式的文件,zipfile解壓出來的就會是亂碼

 

我們可以先把它encode成cp437然后再decode成GBK

最后在把文件重命名回去即可。

import zipfile
from os import rename

# 解壓
with zipfile.ZipFile('test.zip', 'r') as fd:
    for i in fd.namelist():
        gbkfilename = i.encode('cp437').decode('GBK')
        fd.extract(i, 'testdir', pwd='testpassword'.encode('GBK'))
        rename(''.join(['testdir/', i]), ''.join(['testdir/', gbkfilename]))

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM