الدالة gzip.open()
في بايثون
تفتح الدالة ملفًّا مضغوطًا بواسطة 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)