الوحدة zipfile
في بايثون
تعدّ ملفات ZIP من ملفات الأرشفة والضغط الأكثر شيوعًا. تقدّم هذه الوحدة أدواة لإنشاء ملفات ZIP والقراءة منها والكتابة فيها وإلحاق الملفات بها وعرض محتوياتها. يتطلّب الاستخدام المتقدّم لهذه الوحدة فهمًا جيّدًا لصيغة الملفات ZIP والمعرّفة في دليل التطبيق PKZIP.
لا تتعامل هذه الوحدة في الوقت الحاضر مع ملفات ZIP متعددة الأقراص، ولكن يمكنها التعامل مع ملفات ZIP التي تستخدم الإضافة ZIP64 (أي ملفات ZIP التي يتجاوز حجمها 4 GiB). يمكن استخدام الوحدة كذلك لفكّ التعمية عن الملفات المعمّاة encrypted files في أرشيف ZIP، ولكنّ لا يمكن للوحدة إنشاء ملفّات معمّاة في الوقت الحاضر. ويجدر التنبيه إلى أنّ عملية فك التعمية بطيئة للغاية لأنّها تنفّذ باستخدام شيفرة مكتوبة بلغة بايثون عوضًا عن لغة C.
استثناءات الوحدة zipfile
الاستثناء zipfile.BadZipFile
يُطلق هذا الاستثناء عند استخدام ملفات ZIP معطوبة.
ملاحظة: هذا الاستثناء جديد في الإصدار 3.2 من بايثون.
الاستثناء zipfile.BadZipfile
اسم مستعار Alias للاستثناء BadZipFile
ويستخدم لأغراض التوافق مع إصدارات بايثون القديمة.
أهمل هذا الاستثناء منذ الإصدار 3.2 من بايثون.
الاستثناء zipfile.LargeZipFile
يُطلق هذا الاستثناء عندما يحتاج ملف ZIP إلى الإضافة ZIP64 ولكنّها تكون غير مفعّلة.
كائنات ZipFile
يستخدم هذا الصنف لقراءة ملفات ZIP والكتابة فيها.
كائنات PyZipFile
يستخدم هذا الصنف لإنشاء ملفات ZIP تتضمّن مكتبات بايثون.
كائنات ZipInfo
يستخدم هذا الصنف لعرض المعلومات الخاصّة بعضو من أعضاء ملف الأرشيف.
دوال الوحدة zipfile
الدالة is_zipfile()
تتحقق الدالة ممّا إذا كان ملف ZIP المعطى صالحًا للاستخدام أم لا وذلك بالاستناد إلى العدد السحري magic number الخاص بالملف.
ثوابت الوحدة zipfile
zipfile.ZIP_STORED
الثابت العددي لعضو غير مضغوط في الأرشيف.
zipfile.ZIP_DEFLATED
الثابت العددي الخاص بعملية الضغط بطريقة ZIP العادية. يحتاج هذا الثابت إلى الوحدة zlib.
zipfile.ZIP_BZIP2
الثابت العددي لعملية الضغط بطريقة BZIP2. يحتاج هذا الثابت إلى الوحدة bz2
.
ملاحظة: هذا الثابت جديد في الإصدار 3.3 من بايثون.
zipfile.ZIP_LZMA
الثابت العددي لعملية الضغط بطريقة LZMA. يحتاج هذا الثابت إلى الوحدة lzma.
ملاحظة: هذا الثابت جديد في الإصدار 3.3 من بايثون.
ملاحظة:
أضافت مواصفات ملفات ZIP الدعم لعملية الضغط بطريقة bzip2 سنة 2001، وبطريقة LZMA سنة 2006. ولكن يجب الانتباه إلى أنّ بعض الأدوات (ومن ضمنها إصدارات بايثون القديمة) لا تدعم طرق الضغط هذه، وقد يؤدي ذلك إلى رفض التعامل مع ملف ZIP بصورة كاملة، أو عدم التمكن من استخراج بعض الملفات من الأرشيف.
واجهة سطر الأوامر
تقدّم وحدة zipfile
واجهة سطر أوامر بسيطة للتعامل مع ملفات ZIP.
إن كنت ترغب في إنشاء ملف أرشيف ZIP جديد، فعليك أن تحدد الاسم بعد الخيار -c
ثم تسرد أسماء الملفات التي ترغب في إضافتها لهذا الأرشيف:
$ python -m zipfile -c monty.zip spam.txt eggs.txt
يمكن أيضًا تمرير مجلّد كامل:
$ python -m zipfile -c monty.zip life-of-brian_1979/
إن كنت ترغب في استخراج الملفات من أرشيف ZIP إلى مجلّد معين، فيمكنك استخدام الخيار -e
:
$ python -m zipfile -e monty.zip target-dir/
لعرض قائمة بالملفات الموجودة في أرشيف ZIP، استخدم الخيار -l
:
$ python -m zipfile -l monty.zip
خيارات واجهة سطر الأوامر
عرض قائمة بالملفات في ملف الأرشيف:
-l <zipfile>
--list <zipfile>
إنشاء ملف ZIP باستخدام مجموعة من الملفات:
-c <zipfile> <source1> ... <sourceN>
--create <zipfile> <source1> ... <sourceN>
استخراج الملفات الموجودة في ملف ZIP إلى مجلّد معين:
-e <zipfile> <output_dir>
--extract <zipfile> <output_dir>
التحقّق ممّا إذا كان ملف ZIP صالحًا للاستخدام أو لا:
-t <zipfile>
--test <zipfile>
انظر أيضًا
- الوحدة
tarfile
في بايثون: تتيح وحدةtarfile
القدرة على قراءة ملفات الأرشيف tar والكتابة فيها.
مصادر
صفحة Read and write tar archive files في توثيق بايثون الرسمي.