الدالة gzip.open()‎ في بايثون

من موسوعة حسوب
< Python‏ | gzip
مراجعة 06:55، 10 نوفمبر 2018 بواسطة Mohammed Taher (نقاش | مساهمات)
(فرق) → مراجعة أقدم | المراجعة الحالية (فرق) | مراجعة أحدث ← (فرق)
اذهب إلى التنقل اذهب إلى البحث


تفتح الدالة ملفًّا مضغوطًا بواسطة 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)

مصادر