解压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()