الوحدة zipfile‎‎ في بايثون

من موسوعة حسوب
< Python
مراجعة 13:06، 15 نوفمبر 2018 بواسطة Mohammed Taher (نقاش | مساهمات) (←‏مصادر)
(فرق) → مراجعة أقدم | المراجعة الحالية (فرق) | مراجعة أحدث ← (فرق)
اذهب إلى التنقل اذهب إلى البحث


تعدّ ملفات 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 والكتابة فيها.

مصادر