Tạo archive zip từ thư mục dùng zipfile.ZipFile mode 'w' (write) + ZIP_DEFLATED.
Code mẫu
import os
import zipfile
def zipdir(path, ziph):
for root, dirs, files in os.walk(path):
for file in files:
filepath = os.path.join(root, file)
arcname = os.path.relpath(filepath, start=path)
ziph.write(filepath, arcname)
with zipfile.ZipFile('Zipped_file.zip', 'w', zipfile.ZIP_DEFLATED) as zipf:
zipdir('./my_folder', zipf)
print("Đã tạo Zipped_file.zip")
Tạo zip từ list file tùy chọn
files_to_zip = ['file1.txt', 'data/file2.csv', 'image.png']
with zipfile.ZipFile('custom.zip', 'w', zipfile.ZIP_DEFLATED) as zf:
for f in files_to_zip:
zf.write(f, os.path.basename(f)) # chỉ lưu tên file, bỏ path
Thêm file vào zip đã có (append)
with zipfile.ZipFile('existing.zip', 'a', zipfile.ZIP_DEFLATED) as zf:
zf.write('new_file.txt')