เมื่อบีบอัดทั้งไดเร็กทอรี (โฟลเดอร์) ลงในไฟล์ zip ใน Python คุณสามารถใช้ os.scandir() หรือ os.listdir() เพื่อสร้างรายการไฟล์และใช้โมดูล zipfile เพื่อบีบอัดไฟล์เหล่านั้น แต่ใช้งานง่ายกว่า make_archive () ของโมดูล shutil นั้นง่ายกว่า
นอกจากไฟล์ zip แล้ว ยังรองรับรูปแบบอื่นๆ เช่น tar
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการบีบอัดและคลายการบีบอัดไฟล์ zip โดยใช้โมดูล zipfile โปรดดูบทความต่อไปนี้
- บทความที่เกี่ยวข้อง:zipfile เพื่อบีบอัดและคลายการบีบอัดไฟล์ ZIP ใน Python
บีบอัดไดเร็กทอรี (โฟลเดอร์) ลงในไฟล์ zip:shutil.make_archive()
อาร์กิวเมนต์แรก base_name ระบุชื่อของไฟล์ zip ที่จะสร้าง (ไม่มีนามสกุล) และอาร์กิวเมนต์ที่สอง รูปแบบ ระบุรูปแบบไฟล์เก็บถาวร
ต่อไปนี้สามารถเลือกได้สำหรับรูปแบบอาร์กิวเมนต์
zip'
tar'
gztar'
bztar'
xztar'
อาร์กิวเมนต์ที่สาม root_dir ระบุพาธของไดเร็กทอรี root ของไดเร็กทอรีที่จะบีบอัด และอาร์กิวเมนต์ที่สี่ base_dir ระบุพาธของไดเร็กทอรีที่จะบีบอัดโดยสัมพันธ์กับ root_dir ทั้งสองถูกตั้งค่าเป็นไดเร็กทอรีปัจจุบันโดยค่าเริ่มต้น
หากละเว้น base_dir ทั้ง root_dir จะถูกบีบอัด
data/temp
ตัวอย่างเช่น สมมติว่าเรามีไดเร็กทอรีที่มีโครงสร้างดังต่อไปนี้
dir ├── dir_sub │ └── test_sub.txt └── test.txt
import shutil shutil.make_archive('data/temp/new_shutil', 'zip', root_dir='data/temp/dir')
new_shutil.zip ที่ถูกบีบอัดด้วยการตั้งค่าข้างต้นโดยละเว้น base_dir จะถูกคลายการบีบอัดดังนี้
new_shutil ├── dir_sub │ └── test_sub.txt └── test.txt
จากนั้น หากไดเร็กทอรีใน root_dir ถูกระบุสำหรับ base_dir ข้อมูลต่อไปนี้จะปรากฏขึ้น
shutil.make_archive('data/temp/new_shutil_sub', 'zip', root_dir='data/temp/dir', base_dir='dir_sub')
new_shutil_sub.zip ที่บีบอัดด้วยการตั้งค่าข้างต้นจะถูกคลายการบีบอัดดังนี้
dir_sub
└── test_sub.txt