Python zipfile解壓中文問題

2021-08-10 07:13:43 字數 1190 閱讀 7212

windows中使用python2.7遍歷zip檔案之後輸出檔名等資訊,console列印的中文及一些標點出現亂碼。查了一下網上說的windows的編碼為cp936,print()函式交給系統處理列印,所以要提前編碼成windows能夠識別的編碼。

這種print的亂碼也會出現在形如print(mylist)中(mylist是python的list型別變數,print(mylist[2])則不會亂碼,奇怪)

**如下:(.py檔案中在檔案頭先加 # -- coding: utf-8 –-)

import zipfile

deflistzipfilesinfo

(path):

z=zipfile.zipfile(path,'r')

try:

for filename in z.namelist():

bytes=z.read(filename)

print('file:%s size:%s'%(unicode(filename, 'cp936').decode('utf-8'),len(bytes)))

finally:

z.close()

注:decode可以去掉

對於中文問題,如果上面的**還不足以解決你的問題,我們還可以嘗試使用如下方法來進行解決:

import zipfile

deflistzipfilesinfo

(path,topath):

""" 解壓

:param path:zip檔案路徑

:param topath:解壓至的資料夾路徑

"""with zipfile.zipfile(path) as ziptools:

name_list = [unicode(item, 'cp936').decode('utf-8') for item in ziptools.name_list()]

for index,value in enumerate(ziptools.namelist()):

path = os.path.join(topath, os.path.basename(name_list[index]))

data = ziptools.read(value)

with open(path, "w") as f:

f.write(data)

python zipfile修改docx並儲存

docx是microsoft office2007之後版本使用的,用新的基於xml的壓縮檔案格式取代了其目前專有的預設檔案格式,在傳統的檔名擴充套件名後面新增了字母 x 從上述可以知道,只需修改相對應的xml,就可以修改整個docx檔案。將docx用壓縮軟體開啟,可以看到下圖 document.xm...

python zipfile壓縮檔案

import zipfile,os def compress get files path,set files path 壓縮檔案生成.zip 格式檔案 param get files path 需要壓縮的資料夾 param set files path 存放壓縮檔案的位址 return f zip...

Python zipfile 打包超級實用

import zipfile import os defzip pack target,filepath if not target.endswith zip target target format zip zipfilepath os.path.basename target split 0 f...