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

من موسوعة حسوب
< Python‏ | gzip
أنشأ الصفحة ب'<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>BZ2File</code>]] ويُغلّف بنسخة من الصنف <code>io.TextIOWrapper</code> مع القيم المحددة للترميز encoding، وطريقة التعامل مع الأخطاء errors، ونهايات الأسطر newline.
أما في الوضع النصي فينشأ كائن [[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)

مصادر