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...