Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

การสร้าง Zip File ใน Python (zipfile)

ใช้โมดูล zipfile สร้าง Zip Archive จาก Directory โดยเดิน Tree ด้วย os.walk

โค้ดสร้าง Zip (Complete)

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, path)
            ziph.write(filepath, arcname)

with zipfile.ZipFile('Zipped_file.zip', 'w', zipfile.ZIP_DEFLATED) as zipf:
    zipdir('./my_folder', zipf)

คำอธิบาย

  • ZipFile(name, 'w', ZIP_DEFLATED) - สร้าง Zip ใหม่ โหมด Write ใช้ Compression
  • os.walk(path) - Generator เดิน Directory Tree แบบ Top-down
  • os.path.relpath(filepath, path) - Path ภายใน Zip (Relative to source directory)
  • ziph.write(filepath, arcname) - เพิ่มไฟล์จริงเข้า Zip ด้วยชื่อ Archive Name

Compression Methods

ConstantMethodNote
ZIP_STOREDNo CompressionDefault, เร็วกว่า
ZIP_DEFLATEDZlib Deflateต้องมี zlib, 壓縮率好
ZIP_BZIP2Bzip2Python 3.3+, 壓縮率更好
ZIP_LZMALZMAPython 3.3+, 壓縮率最好

เพิ่มไฟล์จาก Memory (Bytes/String)

>> with zipfile.ZipFile('mem.zip', 'w') as zf:
...     zf.writestr('hello.txt', 'Hello from memory!')
...     zf.writestr('data.json', json.dumps({'key': 'value'}))