التابع ZipFile.open()‎‎ في بايثون

من موسوعة حسوب
مراجعة 07:26، 16 نوفمبر 2018 بواسطة Mohammed Taher (نقاش | مساهمات) (أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE:التابع <code>ZipFile.open()‎‎</code> في بايثون}}</noinclude> يتيح التابع الوصول إلى عضو في الأر...')
(فرق) → مراجعة أقدم | المراجعة الحالية (فرق) | مراجعة أحدث ← (فرق)


يتيح التابع الوصول إلى عضو في الأرشيف ككائن ثنائي شبيه بالملفات.

البنية العامة

ZipFile.open(name, mode='r', pwd=None, *, force_zip64=False)

المعاملات

‎name اسم الملف المراد الوصول إليه ضمن الأرشيف أو كائن ZipInfo.

mode إن توفّرت قيمة لهذا المعامل فيجب أن تكون 'r' (القيمة الافتراضية) أو 'w'.

pwd كلمة المرور المستخدمة لفك التعمية عن ملفات ZIP المعمّاة.

يمكن للتابع open()‎ أن يدير السياق ما يعني إمكانية استخدامه مع عبارة with:

with ZipFile('spam.zip') as myzip:

   with myzip.open('eggs.txt') as myfile:
       print(myfile.read())

عند استخدام الوضع 'r' يكون الكائن الشبيه بالملفات (ZipExtFile) للقراءة فقط ويقدّم التوابع التالية: read(), readline(), readlines(), seek(), tell(), __iter__(), __next__().

يمكن لهذه الكائنات أن تعمل بمعزل عن ZipFile.

إن أخذ المعامل mode القيمة 'w' فإنّ التابع يعيد مقبض ملف قابل للكتابة والذي يدعم التابع write()‎، وعندما يكون مقبض الملف القابل للكتابة مفتوحًا تؤدي محاولة قراءة ملفات ZIP أخرى أو الكتابة فيها إلى إطلاق الاستثناء ValueError.

إن لم يكن حجم الملف المضاف إلى الأرشيف معلومًا مسبقًا ولكنّه قد يتجاوز ‎2 GiB فيستحسن تمرير القيمة force_zip64=True لضمان قدرة صيغة الترويسة على التعامل مع ملفات كبيرة. أما إن كان حجم الملف معروفًا مسبقًا، فيمكن إنشاء كائن ZipInfo مع تعيين قيمة للمعامل file_size واستخدام هذا الكائن كقيمة للمعامل name.

ملاحظات

  • يمكن للتوابع open()‎ و read()‎ و extract()‎ أن تتعامل مع أسماء الملفات أو مع كائنات ZipInfo. تظهر فائدة هذا الأمر عند القراءة من ملفات ZIP تحتوي على ملفات ZIP ذات أسماء مكرّرة.
  • لم تعد الدالة البانية تدعم الوضع 'U' في الإصدار 3.6 من اللغة، ويمكن استخدام الكائن io.TextIOWrapper لقراءة الملفات النصية المضغوطة في وضع universial newlines.
  • يمكن استخدام التابع open()‎ لكتابة الملفات إلى ملف الأرشيف باستخدام القيمة 'w' للمعامل mode في الإصدار 3.6 من بايثون.
  • يؤدي استدعاء التابع open()‎ على كائن ZipFile مغلق إلى إطلاق الاستثناء ValueError في الإصدار 3.6 من بايثون. أما في الإصدارات السابقة فكان التابع يُطلق الاستثناء RuntimeError.

أمثلة

يبين المثال التالي آلية عمل التابع:

انظر أيضًا

مصادر

صفحة Work with ZIP archives في توثيق بايثون الرسمي.