هنگامی که کل یک پوشه (پوشه) را در یک فایل فشرده در پایتون فشرده می کنید، می توانید از os.scandir() یا os.listdir() برای ایجاد لیستی از فایل ها و استفاده از ماژول zipfile برای فشرده سازی آنها استفاده کنید، اما استفاده از آن آسان تر است. make_archive () ماژول shutil ساده تر است.
علاوه بر zip، فرمت های دیگری مانند tar نیز پشتیبانی می شود.
برای اطلاعات بیشتر در مورد فشرده سازی و غیر فشرده سازی فایل های فشرده با استفاده از ماژول zipfile به مقاله زیر مراجعه فرمایید.
یک پوشه (پوشه) را در یک فایل فشرده فشرده کنید:shutil.make_archive()
آرگومان اول، base_name، نام فایل فشرده ای را که باید ایجاد شود (بدون پسوند) و آرگومان دوم، فرمت، فرمت آرشیو را مشخص می کند.
موارد زیر را می توان برای قالب آرگومان انتخاب کرد.
zip'
tar'
gztar'
bztar'
xztar'
آرگومان سوم root_dir مسیر دایرکتوری ریشه دایرکتوری را مشخص می کند که باید فشرده شود و آرگومان چهارم 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