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

من موسوعة حسوب
اذهب إلى التنقل اذهب إلى البحث


يكتب التابع البيانات النصية المعطاة في الأرشيف.

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

ZipFile.writestr(zinfo_or_arcname, data, compress_type=None, compresslevel=None)

‎المعاملات

zinfo_or_arcname

يأخذ هذا المعامل إحدى قيمتين، فإمّا أن يكون اسم الملف في الأرشيف، أو نسخة من الصنف ZipInfo. في حال كانت القيمة المعطاة هي نسخة من الصنف فيجب على الأقل تعيين قيمة للمعاملات filename و date و time على الأقل. أما إن كانت القيمة المعطاة هي اسم الملف، فسيعتمد التابع الوقت والتاريخ الحاليين.

يجب أن يكون الأرشيف مفتوحًا في الوضع 'w' أو 'x' أو 'a'.

compress_type

معامل اختياري - في حال تعريفه - تعيد قيمته تعريف القيمة المحدّدة للمعامل compression في الدالة البانية لكائنات ZipFile أو القيمة المحدّدة للمعامل zinfo_or_arcname (في حال استخدام نسخة من الصنف ZipInfo).

compresslevel

كذلك الأمر بالنسبة للمعامل compresslevel إذ تعيد قيمته تعريف القيمة المقابلة لها في الدالة البانية.

ملاحظات:

  • إن استخدمت نسخة من الصنف ZipInfo كقيمة للمعامل zinfo_or_acrname فإنّ طريقة الضغط المستخدمة ستكون تلك المحدّدة في المعامل compress_type للعضو التابع إلى نسخة الصنف ZipInfo المعطاة. تعيّن الدالة البانية للصنف ZipInfo القيمة ZIP_STORED كقيمة افتراضية.
  • أضيف المعامل compress_type في الإصدار 3.2 من بايثون.
  • يؤدي استدعاء التابع writestr()‎ على كائن ZipFile مغلق أو أنشئ في الوضع 'r' إلى إطلاق الاستثناء ValueError في الإصدار 3.6 من بايثون. كان التابع يطلق الاستثناء RuntimeError في الإصدارات السابقة.

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

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

أمثلة

يبين المثال التالي طريقة استخدام التابع:

>>> import zipfile
>>> zip = zipfile.ZipFile('files.zip', 'a')
>>> zip.writestr('file6.css', '.main {padding: 0; margin:0 auto;')
>>> zip.writestr('file7.txt', 'This was written using ZipFile.writestr method in python')
>>> zip.read('file6.css')
b'.main {padding: 0; margin:0 auto;'
>>> zip.read('file7.txt')
b'This was written using ZipFile.writestr method in python'

انظر أيضًا

  • التابع ZipFile.write()‎: يكتب التابع الملف المعطى في ملف الأرشيف.

مصادر

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