Apabila memampatkan keseluruhan direktori (folder) ke dalam fail zip dalam Python, anda boleh menggunakan os.scandir() atau os.listdir() untuk membuat senarai fail dan menggunakan modul zipfile untuk memampatkannya, tetapi ia lebih mudah digunakan. make_archive () modul shutil adalah lebih mudah.
Selain zip, format lain seperti tar juga disokong.
Untuk maklumat lanjut tentang memampatkan dan menyahmampat fail zip menggunakan modul fail zip, sila rujuk artikel berikut.
- Artikel berkaitan:zipfile untuk memampatkan dan menyahmampat fail ZIP dalam Python
Mampatkan direktori (folder) ke dalam fail zip:shutil.make_archive()
Argumen pertama, base_name, menentukan nama fail zip yang akan dibuat (tanpa sambungan), dan argumen kedua, format, menentukan format arkib.
Yang berikut boleh dipilih untuk format hujah.
zip'
tar'
gztar'
bztar'
xztar'
Argumen ketiga, root_dir, menentukan laluan direktori akar direktori yang akan dimampatkan, dan argumen keempat, base_dir, menentukan laluan direktori untuk dimampatkan berbanding root_dir. Kedua-duanya ditetapkan kepada direktori semasa secara lalai.
Jika base_dir diabaikan, keseluruhan root_dir akan dimampatkan.
data/temp
Sebagai contoh, katakan kita mempunyai direktori dengan struktur berikut.
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 yang dimampatkan dengan tetapan di atas yang meninggalkan base_dir akan dinyahmampat seperti berikut.
new_shutil ├── dir_sub │ └── test_sub.txt └── test.txt
Kemudian, jika direktori dalam root_dir ditentukan untuk base_dir, perkara berikut akan ditunjukkan.
shutil.make_archive('data/temp/new_shutil_sub', 'zip', root_dir='data/temp/dir', base_dir='dir_sub')
New_shutil_sub.zip yang dimampatkan dengan tetapan di atas akan dinyahmampat seperti berikut.
dir_sub
└── test_sub.txt