python 解壓縮檔案中文名字亂碼解決

2021-10-23 13:45:50 字數 1289 閱讀 5608

解壓文名字亂碼是因為在解壓縮的時候,預設了一種解碼,那就是cp437,因此要解決這個問題,首先要將解碼出來的再次加密回去,在用gbk解碼出來。

因為已經解壓縮出來了,不能再通過解壓縮來完成上述步驟(除非修改原始碼),這裡採用遍歷資料夾方式將檔案名字改為正常中文

#傳進入完整的資料夾名稱,將名字格式進行更替

defnamessolve

(folderpath)

:for dirpath, dirnames, filenames in os.walk(folderpath)

:#進入需要改正名字的資料夾

for filename in filenames:

try:

newfilename = filename.encode(

'cp437'

).decode(

'gbk'

)#嘗試對檔案名字進行編碼解碼

filefullpath = os.path.join(dirpath,filename)

#如果成功,則將檔案原始路徑算出

newfilefullpath = os.path.join(dirpath,newfilename)

os.rename(filefullpath,newfilefullpath)

#將名字進行替換

except

:print

('檔案更名失敗!'

)for dirname in dirnames:

try:

newdirname = dirname.encode(

'cp437'

).decode(

'gbk'

) dirfullpath = os.path.join(dirpath,dirname)

newdirfullpath = os.path.join(dirpath,newdirname)

os.rename(dirfullpath,newdirfullpath)

#將名字進行替換

except

:print

('資料夾更名失敗!'

)

此遍歷方式有問題,不能完整遍歷完,最好使用資料夾遞迴呼叫方式

找到python安裝資料夾 進入lib 找到zipfile.py原始碼

將此檔案中的cp437替換為gbk

解壓的時候文字編碼很重要,如果編碼不對,會導致檔案找不到等錯誤!

SharpZipLib解壓縮時中文名亂碼 解決

icsharpcode.sharpzlib這個元件直接使用會出現解壓縮中文時出現錯誤。所以需要更改一下作者的源 以下為版本0.86為例。1 在源 中找到 zipinputsteam.cs檔案,開啟它然後定位到 getnextentry 這個函式內。2 在getnextentry裡面有一句 是得到檔名...

python解壓縮檔案

一 壓縮檔案與檢視壓縮檔案資訊 import zipfile importos 要壓縮的檔案目錄 compress dir r e 介面文件 doc zipfile name r e 介面文件 test123.zip zip obj zipfile.zipfile zipfile name,w zi...

解壓縮檔案

public static fastzip fz new fastzip 壓縮檔案 壓縮檔案的路徑與名稱 被壓縮的檔案路徑 解壓密碼 null代表無密碼 public static string filetozip string zipfilepath,string filepath,string ...