官方教程

基础用法

from zipfile import ZipFile

# 把文件压缩到指定文件
with ZipFile(<filename.zip>, 'w') as myzip:
    myzip.write('filename', arcname='new_filename')  # 如果没有arcname,就会用filename来保存
    如果filename是绝对路径,会去掉最前面的/

ZipFile

  • write(filename, arcname=None, compress_type=None, compresslevel=None) arcname默认是filename, 但是去掉了盘符和根/

压缩一个文件夹

root = Path('')
with ZipFile(filename, 'w') as myzip:
    for f in root.rglob("*"):
        myzip.write(f, f.relative_to(root))

处理zip网络文件

import tempfile
import zipfile
import pathlib
res = requests.get(url)
temp_file = tempfile.TemporaryFile()
temp_dir = tempfile.TemporaryDirectory()
for content in res.iter_content(4096):
    temp_file.write(content)
temp_file.seek(0)
zipfile.ZipFile(temp_file).extractall(temp_dir)
print(list(pathlib.Path(temp_dir.name).iterdir()))