الفرق بين المراجعتين لصفحة: «Python/gzip/open»
أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE:الدالة <code>gzip.open()</code> في بايثون}}</noinclude> تفتح الدالة ملفًّا مضغوطًا بواسطة gzip...' |
لا ملخص تعديل |
||
سطر 12: | سطر 12: | ||
=== <code>filename</code> === | === <code>filename</code> === | ||
يمكن للمعامل filename أن يكون اسم ملف حقيقي (سلسلة نصية أو كائن bytes) أو كائن ملفٍّ موجودًا بالفعل، يمكن القراءة منه والكتابة فيه. | يمكن للمعامل <code>filename</code> أن يكون اسم ملف حقيقي ([[Python/str|سلسلة نصية]] أو [[Python/bytes|كائن <code>bytes</code>]]) أو كائن ملفٍّ موجودًا بالفعل، يمكن القراءة منه والكتابة فيه. | ||
=== <code>mode</code> === | === <code>mode</code> === | ||
سطر 20: | سطر 20: | ||
=== <code>compresslevel</code> === | === <code>compresslevel</code> === | ||
[[Python/int|عدد صحيح]] يتدرج من <code>1</code> إلى <code>9</code> (راجع الدالة البانية للصنف GzipFile). | [[Python/int|عدد صحيح]] يتدرج من <code>1</code> إلى <code>9</code> (راجع الدالة البانية للصنف <code>[[Python/GzipFile|GzipFile]]</code>). | ||
تكافئ هذه الدالة في الوضع الثنائي الدالة البانية للصنف [[Python/GzipFile|<code>GzipFile</code>]]: | تكافئ هذه الدالة في الوضع الثنائي الدالة البانية للصنف [[Python/GzipFile|<code>GzipFile</code>]]: | ||
سطر 30: | سطر 30: | ||
وفي مثل هذه الحالة يجب عدم تمرير أيّ قيمة للمعاملات <code>encoding</code> و <code>errors</code> و <code>newline</code>. | وفي مثل هذه الحالة يجب عدم تمرير أيّ قيمة للمعاملات <code>encoding</code> و <code>errors</code> و <code>newline</code>. | ||
أما في الوضع النصي فينشأ كائن [[Python/GzipFile|<code> | أما في الوضع النصي فينشأ كائن [[Python/GzipFile|<code>GzipFile</code>]] ويُغلّف بنسخة من الصنف <code>io.TextIOWrapper</code> مع القيم المحددة للترميز <code>encoding</code>، وطريقة التعامل مع الأخطاء <code>errors</code>، ونهايات الأسطر <code>newline</code>. | ||
'''ملاحظات:''' | '''ملاحظات:''' | ||
* في الإصدار 3.3 من بايثون أصبح من الممكن أن يكون المعامل filename كائن ملف، وأضيف كذلك دعم النمط النصيّ، وأضيفت المعاملات encoding و errors و newline. | * في الإصدار 3.3 من بايثون أصبح من الممكن أن يكون المعامل <code>filename</code> كائن ملف، وأضيف كذلك دعم النمط النصيّ، وأضيفت المعاملات <code>encoding</code> و <code>errors</code> و <code>newline</code>. | ||
* أضيفت الأوضاع 'x' و 'xb' و 'xt' في في الإصدار 3.4 من بايثون. | * أضيفت الأوضاع <code>'x'</code> و <code>'xb'</code> و <code>'xt'</code> في في الإصدار 3.4 من بايثون. | ||
* يمكن أن تأخذ الدالة كائنًا شبيهًا بالمسار في الإصدار 3.6 من بايثون. | * يمكن أن تأخذ الدالة كائنًا شبيهًا بالمسار في الإصدار 3.6 من بايثون. | ||
المراجعة الحالية بتاريخ 06:55، 10 نوفمبر 2018
تفتح الدالة ملفًّا مضغوطًا بواسطة gzip في النمط الثنائي binary mode أو النصي text mode، وتعيد كائن ملف.
البنية العامة
gzip.open(filename, mode='rb', compresslevel=9, encoding=None, errors=None, newline=None)
المعاملات
filename
يمكن للمعامل filename
أن يكون اسم ملف حقيقي (سلسلة نصية أو كائن bytes
) أو كائن ملفٍّ موجودًا بالفعل، يمكن القراءة منه والكتابة فيه.
mode
يمكن يأخذ المعامل mode
إحدى القيم التالية: 'r'
، 'rb'
، 'w'
، 'wb'
، 'x'
، 'xb'
، 'a'
، 'ab'
للنمط الثنائي، والقيم 'rt'
، 'wt'
، 'xt'
، 'at'
للنمط النصي، والقيمة الافتراضية لهذا المعامل هي 'rb'
.
compresslevel
عدد صحيح يتدرج من 1
إلى 9
(راجع الدالة البانية للصنف GzipFile
).
تكافئ هذه الدالة في الوضع الثنائي الدالة البانية للصنف GzipFile
:
GzipFile(filename, mode, compresslevel)
وفي مثل هذه الحالة يجب عدم تمرير أيّ قيمة للمعاملات encoding
و errors
و newline
.
أما في الوضع النصي فينشأ كائن GzipFile
ويُغلّف بنسخة من الصنف io.TextIOWrapper
مع القيم المحددة للترميز encoding
، وطريقة التعامل مع الأخطاء errors
، ونهايات الأسطر newline
.
ملاحظات:
- في الإصدار 3.3 من بايثون أصبح من الممكن أن يكون المعامل
filename
كائن ملف، وأضيف كذلك دعم النمط النصيّ، وأضيفت المعاملاتencoding
وerrors
وnewline
. - أضيفت الأوضاع
'x'
و'xb'
و'xt'
في في الإصدار 3.4 من بايثون. - يمكن أن تأخذ الدالة كائنًا شبيهًا بالمسار في الإصدار 3.6 من بايثون.
القيمة المعادة
تعيد الدالة كائن ملف.
أمثلة
يبين المثال التالية كيفية قراءة ملفّ مضغوط:
import gzip
with gzip.open('/home/joe/file.txt.gz', 'rb') as f:
file_content = f.read()
يبين المثال التالي كيفية إنشاء ملف GZIP مضغوط:
import gzip
content = b"Lots of content here"
with gzip.open('/home/joe/file.txt.gz', 'wb') as f:
f.write(content)
يوضّح المثال التالي طريقة ضغط ملفّ موجود أصلًا:
import gzip
import shutil
with open('/home/joe/file.txt', 'rb') as f_in:
with gzip.open('/home/joe/file.txt.gz', 'wb') as f_out:
shutil.copyfileobj(f_in, f_out)