عند ضغط مجلد (مجلد) بأكمله في ملف مضغوط في Python ، يمكنك استخدام os.scandir () أو os.listdir () لإنشاء قائمة بالملفات واستخدام وحدة zipfile لضغطها ، ولكن من الأسهل استخدامها يكون make_archive () الخاص بوحدة shutil أسهل.
بالإضافة إلى الرمز البريدي ، يتم أيضًا دعم التنسيقات الأخرى مثل القطران.
لمزيد من المعلومات حول ضغط الملفات المضغوطة وإلغاء ضغطها باستخدام وحدة zipfile ، يرجى الرجوع إلى المقالة التالية.
- مقالات ذات صلة:zipfile لضغط وفك ضغط ملفات ZIP في Python
ضغط دليل (مجلد) في ملف مضغوط: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