本文完整示例代碼及檔案已上傳至我的<code>Github</code>倉庫https://github.com/CNFeffery/PythonPracticalSkills
這是我的新系列文章「Python實用秘技」的第1期,本系列立足于筆者日常工作中使用<code>Python</code>輔助辦公的心得體會,每一期為大家帶來一個3分鐘即可學會的簡單小技巧。
作為系列第1期,我們即将學習的是:<code>複雜zip檔案的解壓</code>。
廢話不多說,直接看問題,使用過<code>Python</code>中的标準庫<code>zipfile</code>解壓過<code>zip</code>格式壓縮包的朋友們,可能遇到過,當壓縮檔案中的目錄或檔案名中包含中文等常見<code>unicode</code>字元時,典型如下面的例子:
使用<code>zipfile</code>的<code>extract()</code>或<code>extractall()</code>方法直接解壓時,産生的解壓結果名充斥着亂碼,這一點我們通過調用<code>namelist()</code>方法就可以看出來:
這是因為<code>zipfile</code>中針對壓縮包内容的編碼相容性差,但我們可以通過下面的函數自行矯正:
解決了檔案名亂碼的問題後,接下來我們就可以配合<code>shutil</code>與<code>os</code>标準庫中的相關功能,實作将指定任意<code>zip</code>壓縮包,完好地解壓到指定的目錄中,代碼如下:
可以看到,效果完美🥳:
本期分享結束,咱們下回見~👋