الفرق بين المراجعتين لصفحة: «Python/zipfile»

من موسوعة حسوب
سطر 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</code>==
 
===الاستثناء <code>zipfile.BadZipFile</code>===
=== الاستثناء <code>zipfile.BadZipFile</code> ===
 
يُطلق هذا الاستثناء عند استخدام ملفات ZIP معطوبة.
يُطلق هذا الاستثناء عند استخدام ملفات ZIP معطوبة.


'''ملاحظة:''' هذا الاستثناء جديد في الإصدار 3.2 من بايثون.
'''ملاحظة:''' هذا الاستثناء جديد في الإصدار 3.2 من بايثون.
 
===الاستثناء <code>zipfile.BadZipfile</code>===
=== الاستثناء <code>zipfile.BadZipfile</code> ===
اسم مستعار Alias للاستثناء <code>BadZipFile</code> ويستخدم لأغراض التوافق مع إصدارات بايثون القديمة. أهمل هذا الاستثناء منذ الإصدار 3.2 من بايثون.
 
===الاستثناء <code>zipfile.LargeZipFile</code>===
اسم مستعار Alias للاستثناء <code>BadZipFile</code> ويستخدم لأغراض التوافق مع إصدارات بايثون القديمة.
أهمل هذا الاستثناء منذ الإصدار 3.2 من بايثون.
 
=== الاستثناء <code>zipfile.LargeZipFile</code> ===
يُطلق هذا الاستثناء عندما يحتاج ملف ZIP إلى الإضافة ZIP64 ولكنّها تكون غير مفعّلة.
يُطلق هذا الاستثناء عندما يحتاج ملف ZIP إلى الإضافة ZIP64 ولكنّها تكون غير مفعّلة.
== كائنات <code>ZipFile</code> ==
==كائنات <code>[[Python/ZipFile|ZipFile]]</code>==
يستخدم هذا الصنف لقراءة ملفات ZIP والكتابة فيها.
يستخدم هذا الصنف لقراءة ملفات ZIP والكتابة فيها.
== كائنات <code>PyZipFile</code> ==
==كائنات <code>[[Python/PyZipFile|PyZipFile]]</code>==
يستخدم هذا الصنف لإنشاء ملفات ZIP تتضمّن مكتبات بايثون.
يستخدم هذا الصنف لإنشاء ملفات ZIP تتضمّن مكتبات بايثون.
== كائنات <code>ZipInfo</code> ==
==كائنات <code>[[Python/ZipInfo|ZipInfo]]</code>==
يستخدم هذا الصنف لعرض المعلومات الخاصّة بعضو من أعضاء ملف الأرشيف.  
يستخدم هذا الصنف لعرض المعلومات الخاصّة بعضو من أعضاء ملف الأرشيف.
 
==دوال الوحدة <code>zipfile</code>==
== دوال الوحدة <code>zipfile</code> ==
===الدالة <code>[[Python/zipfile/iz zipfile|is_zipfile()‎]]</code>===
 
=== الدالة <code>[[Python/zipfile/iz zipfile|is_zipfile()‎]]</code> ===
 
تتحقق الدالة ممّا إذا كان ملف ZIP المعطى صالحًا للاستخدام أم لا وذلك بالاستناد إلى العدد السحري magic number الخاص بالملف.
تتحقق الدالة ممّا إذا كان ملف ZIP المعطى صالحًا للاستخدام أم لا وذلك بالاستناد إلى العدد السحري magic number الخاص بالملف.
 
==ثوابت الوحدة <code>zipfile</code>==
== ثوابت الوحدة <code>zipfile</code> ==
===<code>zipfile.ZIP_STORED</code>===
 
=== <code>zipfile.ZIP_STORED</code> ===
الثابت العددي لعضو غير مضغوط في الأرشيف.
الثابت العددي لعضو غير مضغوط في الأرشيف.
 
===<code>zipfile.ZIP_DEFLATED</code>===
=== <code>zipfile.ZIP_DEFLATED</code> ===
الثابت العددي الخاص بعملية الضغط بطريقة ZIP العادية. يحتاج هذا الثابت إلى [[Python/zlib|الوحدة zlib]].
الثابت العددي الخاص بعملية الضغط بطريقة ZIP العادية. يحتاج هذا الثابت إلى [[Python/zlib|الوحدة zlib]].
 
===<code>zipfile.ZIP_BZIP2</code>===
=== <code>zipfile.ZIP_BZIP2</code> ===
الثابت العددي لعملية الضغط بطريقة BZIP2. يحتاج هذا الثابت إلى [[Python/bz2|الوحدة <code>bz2</code>]].
الثابت العددي لعملية الضغط بطريقة BZIP2. يحتاج هذا الثابت إلى [[Python/bz2|الوحدة <code>bz2</code>]].


'''ملاحظة:''' هذا الثابت جديد في الإصدار 3.3 من بايثون.
'''ملاحظة:''' هذا الثابت جديد في الإصدار 3.3 من بايثون.
=== <code>zipfile.ZIP_LZMA</code> ===
===<code>zipfile.ZIP_LZMA</code>===
الثابت العددي لعملية الضغط بطريقة LZMA. يحتاج هذا الثابت إلى [[Python/lzma|الوحدة lzma]].
الثابت العددي لعملية الضغط بطريقة LZMA. يحتاج هذا الثابت إلى [[Python/lzma|الوحدة lzma]].


سطر 52: سطر 39:


أضافت مواصفات ملفات ZIP الدعم لعملية الضغط بطريقة bzip2 سنة 2001، وبطريقة LZMA سنة 2006. ولكن يجب الانتباه إلى أنّ بعض الأدوات (ومن ضمنها إصدارات بايثون القديمة) لا تدعم طرق الضغط هذه، وقد يؤدي ذلك إلى رفض التعامل مع ملف ZIP بصورة كاملة، أو عدم التمكن من استخراج بعض الملفات من الأرشيف.
أضافت مواصفات ملفات ZIP الدعم لعملية الضغط بطريقة bzip2 سنة 2001، وبطريقة LZMA سنة 2006. ولكن يجب الانتباه إلى أنّ بعض الأدوات (ومن ضمنها إصدارات بايثون القديمة) لا تدعم طرق الضغط هذه، وقد يؤدي ذلك إلى رفض التعامل مع ملف ZIP بصورة كاملة، أو عدم التمكن من استخراج بعض الملفات من الأرشيف.
 
==واجهة سطر الأوامر==
== واجهة سطر الأوامر ==
تقدّم وحدة <code>zipfile</code> واجهة سطر أوامر بسيطة للتعامل مع ملفات ZIP.
تقدّم وحدة <code>zipfile</code> واجهة سطر أوامر بسيطة للتعامل مع ملفات ZIP.


سطر 65: سطر 51:
$ python -m zipfile -l monty.zip
$ python -m zipfile -l monty.zip
</syntaxhighlight>
</syntaxhighlight>
 
===خيارات واجهة سطر الأوامر===
=== خيارات واجهة سطر الأوامر ===
عرض قائمة بالملفات في ملف الأرشيف:<syntaxhighlight lang="shell">
عرض قائمة بالملفات في ملف الأرشيف:<syntaxhighlight lang="shell">
-l <zipfile>
-l <zipfile>
سطر 80: سطر 65:
--test <zipfile>
--test <zipfile>
</syntaxhighlight>
</syntaxhighlight>
 
==انظر أيضًا==
== انظر أيضًا ==
*الوحدة <code>[[Python/tarfile|tarfile]]</code> في بايثون: تتيح وحدة <code>tarfile</code> القدرة على قراءة ملفات الأرشيف tar والكتابة فيها.
* الوحدة <code>[[Python/tarfile|tarfile]]</code> في بايثون: تتيح وحدة <code>tarfile</code> القدرة على قراءة ملفات الأرشيف tar والكتابة فيها.  
==مصادر==
 
* <span> </span>[https://docs.python.org/3/library/zipfile.html صفحة Read and write tar archive files في توثيق بايثون الرسمي.]
== مصادر ==
[https://docs.python.org/3/library/zipfile.html صفحة Read and write tar archive files في توثيق بايثون الرسمي.]
 
[[تصنيف:Python]]
[[تصنيف:Python]]
[[تصنيف:Python Modules]]
[[تصنيف:Python Modules]]

مراجعة 13:05، 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>

إنشاء ملف 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 والكتابة فيها.

مصادر