الفرق بين المراجعتين لصفحة: «Python/zipfile»
أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE:الوحدة <code>zipfile</code> في بايثون}}</noinclude> تعدّ ملفات ZIP من ملفات الأرشفة والضغط ا...' |
لا ملخص تعديل |
||
سطر 4: | سطر 4: | ||
لا تتعامل هذه الوحدة في الوقت الحاضر مع ملفات ZIP متعددة الأقراص، ولكن يمكنها التعامل مع ملفات ZIP التي تستخدم الإضافة ZIP64 (أي ملفات ZIP التي يتجاوز حجمها 4 GiB). يمكن استخدام الوحدة كذلك لفكّ التعمية عن الملفات المعمّاة encrypted files في أرشيف ZIP، ولكنّ لا يمكن للوحدة إنشاء ملفّات معمّاة في الوقت الحاضر. ويجدر التنبيه إلى أنّ عملية فك التعمية بطيئة للغاية لأنّها تنفّذ باستخدام شيفرة مكتوبة بلغة بايثون عوضًا عن لغة C. | لا تتعامل هذه الوحدة في الوقت الحاضر مع ملفات ZIP متعددة الأقراص، ولكن يمكنها التعامل مع ملفات ZIP التي تستخدم الإضافة ZIP64 (أي ملفات ZIP التي يتجاوز حجمها 4 GiB). يمكن استخدام الوحدة كذلك لفكّ التعمية عن الملفات المعمّاة encrypted files في أرشيف ZIP، ولكنّ لا يمكن للوحدة إنشاء ملفّات معمّاة في الوقت الحاضر. ويجدر التنبيه إلى أنّ عملية فك التعمية بطيئة للغاية لأنّها تنفّذ باستخدام شيفرة مكتوبة بلغة بايثون عوضًا عن لغة C. | ||
== استثناءات الوحدة <code>zipfile</code> == | |||
=== الاستثناء <code>zipfile.BadZipFile</code> === | |||
يُطلق هذا الاستثناء عند استخدام ملفات ZIP معطوبة. | |||
'''ملاحظة:''' هذا الاستثناء جديد في الإصدار 3.2 من بايثون. | |||
هذا الاستثناء جديد في الإصدار 3.2 من بايثون. | |||
=== الاستثناء zipfile.BadZipfile === | === الاستثناء <code>zipfile.BadZipfile</code> === | ||
اسم مستعار Alias للاستثناء BadZipFile ويستخدم لأغراض التوافق مع إصدارات بايثون القديمة. | اسم مستعار Alias للاستثناء <code>BadZipFile</code> ويستخدم لأغراض التوافق مع إصدارات بايثون القديمة. | ||
أهمل هذا الاستثناء منذ الإصدار 3.2 من بايثون. | أهمل هذا الاستثناء منذ الإصدار 3.2 من بايثون. | ||
=== الاستثناء zipfile.LargeZipFile === | === الاستثناء <code>zipfile.LargeZipFile</code> === | ||
يُطلق هذا الاستثناء عندما يحتاج ملف ZIP إلى الإضافة ZIP64 ولكنّها تكون غير مفعّلة. | يُطلق هذا الاستثناء عندما يحتاج ملف ZIP إلى الإضافة ZIP64 ولكنّها تكون غير مفعّلة. | ||
== كائنات <code>ZipFile</code> == | |||
== كائنات ZipFile == | |||
يستخدم هذا الصنف لقراءة ملفات ZIP والكتابة فيها. | يستخدم هذا الصنف لقراءة ملفات ZIP والكتابة فيها. | ||
== كائنات PyZipFile == | == كائنات <code>PyZipFile</code> == | ||
يستخدم هذا الصنف لإنشاء ملفات ZIP تتضمّن مكتبات بايثون. | يستخدم هذا الصنف لإنشاء ملفات ZIP تتضمّن مكتبات بايثون. | ||
== كائنات ZipInfo == | == كائنات <code>ZipInfo</code> == | ||
يستخدم هذا الصنف لعرض المعلومات الخاصّة بعضو من أعضاء ملف الأرشيف. | يستخدم هذا الصنف لعرض المعلومات الخاصّة بعضو من أعضاء ملف الأرشيف. | ||
== دوال الوحدة zipfile == | == دوال الوحدة <code>zipfile</code> == | ||
=== الدالة is_zipfile() === | === الدالة <code>[[Python/zipfile/iz zipfile|is_zipfile()]]</code> === | ||
تتحقق الدالة ممّا إذا كان ملف ZIP المعطى صالحًا للاستخدام أم لا وذلك بالاستناد إلى العدد السحري magic number الخاص بالملف. | تتحقق الدالة ممّا إذا كان ملف ZIP المعطى صالحًا للاستخدام أم لا وذلك بالاستناد إلى العدد السحري magic number الخاص بالملف. | ||
سطر 37: | سطر 34: | ||
== ثوابت الوحدة zipfile == | == ثوابت الوحدة zipfile == | ||
=== zipfile.ZIP_STORED === | === <code>zipfile.ZIP_STORED</code> === | ||
الثابت العددي لعضو غير مضغوط في الأرشيف. | الثابت العددي لعضو غير مضغوط في الأرشيف. | ||
=== zipfile.ZIP_DEFLATED === | === <code>zipfile.ZIP_DEFLATED</code> === | ||
الثابت العددي الخاص بعملية الضغط بطريقة ZIP العادية. يحتاج هذا الثابت إلى الوحدة zlib. | الثابت العددي الخاص بعملية الضغط بطريقة ZIP العادية. يحتاج هذا الثابت إلى [[Python/zlib|الوحدة zlib]]. | ||
=== zipfile.ZIP_BZIP2 === | === <code>zipfile.ZIP_BZIP2</code> === | ||
الثابت العددي لعملية الضغط بطريقة BZIP2. يحتاج هذا الثابت إلى الوحدة bz2. | الثابت العددي لعملية الضغط بطريقة BZIP2. يحتاج هذا الثابت إلى الوحدة bz2. | ||
=== zipfile.ZIP_LZMA === | '''ملاحظة:''' هذا الثابت جديد في الإصدار 3.3 من بايثون. | ||
=== <code>zipfile.ZIP_LZMA</code> === | |||
الثابت العددي لعملية الضغط بطريقة LZMA. يحتاج هذا الثابت إلى الوحدة lzma. | الثابت العددي لعملية الضغط بطريقة LZMA. يحتاج هذا الثابت إلى الوحدة lzma. | ||
'''ملاحظة''': | '''ملاحظة:''' هذا الثابت جديد في الإصدار 3.3 من بايثون. | ||
'''ملاحظة''': | |||
أضافت مواصفات ملفات ZIP الدعم لعملية الضغط بطريقة bzip2 سنة 2001، وبطريقة LZMA سنة 2006. ولكن يجب الانتباه إلى أنّ بعض الأدوات (ومن ضمنها إصدارات بايثون القديمة) لا تدعم طرق الضغط هذه، وقد يؤدي ذلك إلى رفض التعامل مع ملف ZIP بصورة كاملة، أو عدم التمكن من استخراج بعض الملفات من الأرشيف. | أضافت مواصفات ملفات ZIP الدعم لعملية الضغط بطريقة bzip2 سنة 2001، وبطريقة LZMA سنة 2006. ولكن يجب الانتباه إلى أنّ بعض الأدوات (ومن ضمنها إصدارات بايثون القديمة) لا تدعم طرق الضغط هذه، وقد يؤدي ذلك إلى رفض التعامل مع ملف ZIP بصورة كاملة، أو عدم التمكن من استخراج بعض الملفات من الأرشيف. | ||
مراجعة 08:35، 15 نوفمبر 2018
تعدّ ملفات 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>
عرض قائمة بالملفات في ملف الأرشيف.
-c <zipfile> <source1> ... <sourceN> --create <zipfile> <source1> ... <sourceN>
إنشاء ملف ZIP باستخدام مجموعة من الملفات.
-e <zipfile> <output_dir> --extract <zipfile> <output_dir>
استخراج الملفات الموجودة في ملف ZIP إلى مجلّد معين.
-t <zipfile> --test <zipfile>
التحقّق مما إذا كان ملف ZIP صالحًا للاستخدام أو لا.
انظر أيضًا
- الوحدة tarfile في بايثون:
مصادر
صفحة Read and write tar archive files في توثيق بايثون الرسمي.