فشرده سازی دایرکتوری (پوشه) به یک zip یا tar در پایتون

کسب و کار

هنگامی که کل یک پوشه (پوشه) را در یک فایل فشرده در پایتون فشرده می کنید، می توانید از 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
Copied title and URL