الدالة 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
.
أما في الوضع النصي فينشأ كائن BZ2File
ويُغلّف بنسخة من الصنف 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)