Memampatkan direktori (folder) ke dalam zip atau tar dalam Python

Perniagaan

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.

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
Copied title and URL