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

من موسوعة حسوب

يضيف التابع الملف المعطى إلى ملف الأرشيف.

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

ZipFile.write(filename, arcname=None, compress_type=None, compresslevel=None)

‎المعاملات

‎filename

اسم الملف المراد إضافته إلى الأرشيف.

arcname

الاسم الذي يعطيه التابع للملف المضاف إلى الأرشيف.

القيمة الافتراضية لهذا المعامل هي نفس قيمة المعامل filename ولكن مع حذف اسم محرّك الأقراص والفواصل الموجودة في بداية المسار

compress_type

معامل اختياري تعيد قيمته تعريف القيمة المحدّدة للمعامل compression في الدالة البانية لكائنات ZipFile.

compresslevel

معامل اختياري تعيد قيمته تعريف القيمة المقابلة لها في الدالة البانية.

ملاحظات:

  • يجب فتح الأرشيف بوضع 'w' أو 'x' أو 'a'.
  • لا تدعم ملّفات ZIP ترميزًا معيًنا؛ لذا إن كانت ملفّاتك مرمّزة بالترميز الموحد unicode يجب عليك تحويل أسماء الملفات إلى سلاسل بايتات نصية بالترميز المطلوب قبل تمرير الملفات إلى التابع write()‎. يفسّر برنامج WinZip أسماء الملفات كلّها على أنّها مرمّزة بالترميز CP437 والمعروف أيضًا بالترميز DOS Latin.
  • يجب أن تكن أسماء الملفات في الأرشيف نسبية إلى جذر الأرشيف، بمعنى أنّه يجب أن لا تبدأ أسماء الملفات بفاصل المسار.
  • إن احتوت قيمة المعامل arcname (أو المعامل filename إن كان arcname غير متوفّر) على بايتات من نوع null، فسيجري اقتطاع اسم الملف في الأرشيف عند البايت من نوع null.
  • يؤدي استدعاء التابع testzip()‎ على كائن ZipFile مغلق إلى إطلاق الاستثناء ValueError في الإصدار 3.6 من بايثون. كان التابع يطلق الاستثناء RuntimeError في الإصدارات السابقة.

القيمة المعادة

يعيد التابع القمية None.

أمثلة

يبين المثال التالي طريقة إضافة ملف إلى الأرشيف:

>>> import zipfile
>>> zip = zipfile.ZipFile('files.zip')        # فتح ملف الأرشيف في وضع القراءة
>>> zip.printdir()                            # عرض قائمة بالملفات الموجودة في الأرشيف
File Name                                             Modified             Size
file1.txt                                      2018-11-16 10:33:06           12
file2.html                                     2018-11-16 10:41:28            0
file3.py                                       2018-11-14 21:24:14            0
>>> zip.close()
>>> zip = zipfile.ZipFile('files.zip', 'a')   # فتح ملف الأرشيف في وضع الإلحاق
>>> zip.write('file4.css')                    # إضافة ملف إلى الأرشيف
>>> zip.printdir()                            # عرض قائمة بالملفات الموجودة في الأرشيف ويظهر فيها الملف المضاف
File Name                                             Modified             Size
file1.txt                                      2018-11-16 10:33:06           12
file2.html                                     2018-11-16 10:41:28            0
file3.py                                       2018-11-14 21:24:14            0
file4.css                                      2018-11-14 22:41:49            0

انظر أيضًا

  • التابع ZipFile.writestr()‎: يكتب التابع البيانات النصية المعطاة في الأرشيف.

مصادر

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