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

من موسوعة حسوب
أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE:التابع <code>ZipFile.write()‎‎</code> في بايثون}}</noinclude> يضيف التابع الملف المعطى إلى ملف ا...'
 
 
سطر 7: سطر 7:
ZipFile.write(filename, arcname=None, compress_type=None, compresslevel=None)
ZipFile.write(filename, arcname=None, compress_type=None, compresslevel=None)
</syntaxhighlight>
</syntaxhighlight>
== المعاملات ==
=== filename ===


== ‎المعاملات ==
=== <code>‎filename</code> ===
اسم الملف المراد إضافته إلى الأرشيف.
اسم الملف المراد إضافته إلى الأرشيف.


=== arcname ===
=== <code>arcname</code> ===
الاسم الذي يعطيه التابع للملف المضاف إلى الأرشيف.
الاسم الذي يعطيه التابع للملف المضاف إلى الأرشيف.


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


=== compress_type ===
=== <code>compress_type</code> ===
معامل اختياري تعيد قيمته تعريف القيمة المحدّدة للمعامل compression في الدالة البانية لكائنات ZipFile.
معامل اختياري تعيد قيمته تعريف القيمة المحدّدة للمعامل <code>compression</code> في الدالة البانية لكائنات <code>[[Python/ZipFile|ZipFile]]</code>.


=== compresslevel ===
=== <code>compresslevel</code> ===
معامل اختياري تعيد قيمته تعريف القيمة المقابلة لها في الدالة البانية.
معامل اختياري تعيد قيمته تعريف القيمة المقابلة لها في الدالة البانية.


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


== القيمة المعادة ==
== القيمة المعادة ==
سطر 40: سطر 39:
<syntaxhighlight lang="python3">
<syntaxhighlight lang="python3">
>>> import zipfile
>>> import zipfile
>>> zip = zipfile.ZipFile('files.zip')
>>> zip = zipfile.ZipFile('files.zip')       # فتح ملف الأرشيف في وضع القراءة
>>> zip.printdir()
>>> zip.printdir()                           # عرض قائمة بالملفات الموجودة في الأرشيف
File Name                                            Modified            Size
File Name                                            Modified            Size
file1.txt                                      2018-11-16 10:33:06          12
file1.txt                                      2018-11-16 10:33:06          12
سطر 47: سطر 46:
file3.py                                      2018-11-14 21:24:14            0
file3.py                                      2018-11-14 21:24:14            0
>>> zip.close()
>>> zip.close()
>>> zip = zipfile.ZipFile('files.zip', 'a')
>>> zip = zipfile.ZipFile('files.zip', 'a')   # فتح ملف الأرشيف في وضع الإلحاق
>>> zip.write('file4.css')
>>> zip.write('file4.css')                   # إضافة ملف إلى الأرشيف
>>> zip.printdir()
>>> zip.printdir()                           # عرض قائمة بالملفات الموجودة في الأرشيف ويظهر فيها الملف المضاف
File Name                                            Modified            Size
File Name                                            Modified            Size
file1.txt                                      2018-11-16 10:33:06          12
file1.txt                                      2018-11-16 10:33:06          12

المراجعة الحالية بتاريخ 08:41، 16 نوفمبر 2018

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

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

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 في توثيق بايثون الرسمي.