python解壓zip包中文亂碼解決方法
亂碼得原因:
由于ZipFile模塊導(dǎo)出遇到中文解碼不對,windows上會出現(xiàn),linux是否會出現(xiàn)不知道沒測試過。
解決方式:
1. 搞個文件名引射表(不太方便,少量文件夾套用時候還可以)
2. 修改源碼解碼格式(不太方便,自己搞了一下,之后報其他錯誤)
3. 自己寫入文件,自己創(chuàng)建文件夾(推薦)
自己創(chuàng)建的寫法:
with zipfile.ZipFile(file=zip_save_path, mode='r') as zf: # 解壓到指定目錄,首先創(chuàng)建一個解壓目錄 os.mkdir(unzip_dir_path) for old_name in zf.namelist(): # 獲取文件大小,目的是區(qū)分文件夾還是文件,如果是空文件應(yīng)該不好用。 file_size = zf.getinfo(old_name).file_size # 由于源碼遇到中文是cp437方式,所以解碼成gbk,windows即可正常 new_name = old_name.encode('cp437').decode('gbk') # 拼接文件的保存路徑 new_path = os.path.join(unzip_dir_path, new_name) # 判斷文件是文件夾還是文件 if file_size > 0: # 是文件,通過open創(chuàng)建文件,寫入數(shù)據(jù) with open(file=new_path, mode='wb') as f: # zf.read 是讀取壓縮包里的文件內(nèi)容 f.write(zf.read(old_name)) else: # 是文件夾,就創(chuàng)建 os.mkdir(new_path)
結(jié)果正常:
以上就是python解壓zip包中文亂碼解決方法的詳細(xì)內(nèi)容,更多關(guān)于python 解壓zip包中文亂碼的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Pytorch用Tensorboard來觀察數(shù)據(jù)
這篇文章主要介紹了Pytorch用Tensorboard來觀察數(shù)據(jù),上一篇文章我們講解了關(guān)于Pytorch?Dataset的數(shù)據(jù)處理,這篇我們就來講解觀察數(shù)據(jù),下面具體相關(guān)資料,需要的朋友可以參考一下,希望對你有所幫助2021-12-12Python正則替換字符串函數(shù)re.sub用法示例
這篇文章主要介紹了Python正則替換字符串函數(shù)re.sub用法,結(jié)合實例形式分析了正則替換字符串函數(shù)re.sub的功能及簡單使用方法,具有一定參考借鑒價值,需要的朋友可以參考下2017-01-01Playwright元素截圖并保存至allure的實現(xiàn)示例
在UI自動化測試中,我們經(jīng)常需要獲取屏幕截圖,本文就介紹一下Playwright元素截圖并保存至allure的實現(xiàn)示例,具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-12-12在Python3中初學(xué)者應(yīng)會的一些基本的提升效率的小技巧
這篇文章主要介紹了在Python3中的一些基本的小技巧,有利于剛剛上手Python的初學(xué)者提升開發(fā)效率,需要的朋友可以參考下2015-03-03如何使用python數(shù)據(jù)處理解決數(shù)據(jù)沖突和樣本的選取
這篇文章主要介紹了如何使用python數(shù)據(jù)處理解決數(shù)據(jù)沖突和樣本的選取,其中主要包括 實際業(yè)務(wù)數(shù)據(jù)沖突、樣本選取問題、數(shù)據(jù)共線性等思路2021-08-08Django項目開發(fā)中cookies和session的常用操作分析
這篇文章主要介紹了Django項目開發(fā)中cookies和session的常用操作,結(jié)合實例形式分析了Django中cookie與session的檢查、設(shè)置、獲取等常用操作技巧,需要的朋友可以參考下2018-07-07