解压zip文件

读取压缩包

zipobj.namelist()

import zipfile
with zipfile.ZipFile('c:/练习1.zip','r') as 文件:
    for 文件名 in 文件.namelist():
        print(文件名.encode('cp437').decode('gbk'))

查看压缩包里面的信息

zipobj.getinfo()

import zipfile
with zipfile.ZipFile('c:/练习1.zip','r') as 文件:
    for 文件名 in 文件.namelist():
        信息 = 文件.getinfo(文件名)
        文件名 = 文件名.encode('cp437').decode('gbk')
        # 输出结果: 文件名称、文件大小、压缩后的大小(单位是字节)
        print(文件名, 信息.file_size, 信息.compress_size)

解压单个文件

zipobj.extract()

import zipfile
with zipfile.ZipFile('c:/练习2.zip','r') as 文件:
    文件.extract('WinRAR.rar','c:/练习2')  # 解压的文件名,解压的路径

解压全部文件

import zipfile
with zipfile.ZipFile('c:/练习2.zip','r') as 文件:
    文件.extractall(path = 'c:/练习2')

解压有中文名字的zip文件

from pathlib import Path
import zipfile
import os
os.chdir('c:/练习2') # 保证有这个文件夹
with zipfile.ZipFile('c:/练习1.zip', 'r') as 文件:
    for 文件名 in 文件.namelist():
        解压后的文件 = Path(文件.extract(文件名,pwd=b'1234'))
        解压后的文件.rename(文件名.encode('cp437').decode('gbk'))

创建压缩文件

zip = zipfile.ZipFile(outFileName, "w", zipfile.ZIP_DEFLATED)
# 遍历文件或文件夹
for path, dirnames, filenames in os.walk('C:/test'):
    fpath = path.replace("C:/test", "C:/test2")
    for filename in filenames:
        zip.write(os.path.join(path, filename), os.path.join(fpath, filename))
        zip.close()