الدالة zlib.decompress()‎ في بايثون

من موسوعة حسوب
< Python‏ | zlib


تفكّ الدالة الضغط عن البايتات في البيانات المعطاة، وتعيد كائن bytes يحتوي على البيانات التي أزيل الضغط عنها.

البنية العامة

zlib.decompress(data, wbits=MAX_WBITS, bufsize=DEF_BUF_SIZE)

المعاملات

wbits

يعتمد هذا المعامل على صيغة البيانات المعطاة، وسنتحدث عنه بتفصيل أكبر أدناه.

يتحكّم المعامل wbits بحجم ذاكرة تخزين التاريخ history buffer (أو ما يطلق عليه "حجم النافذة window size") المستخدمة في ضغط البيانات، ويتحكّم كذلك فيما إذا كانت مخرجات الدالة تتضمّن ترويسة وتذييلًا. هذا المعامل يشبه نظيره في الدالة compressobj()‎ ولكنّه يأخذ نطاقات أكثر من القيم:

+8 إلى ‎+15: لوغاريتم ذو الأساس 2 لحجم النافذة. يجب أن تتضمّن المدخلات ترويسة وتذييل مكتبة zlib.

0: تحدّد الدالة حجم النافذة تلقائيًا مستعينة في ذلك بترويسة zlib. هذه القيمة مدعومة في الإصدار 1.2.3.5 من zlib.

‎-8 إلى ‎-15: تستخدم الدالة القيمة المطلقة للمعامل wbits كلوغاريتم لحجم النافذة، ويجب أن لا تتضمّن المدخلات ترويسة أو تذييلًا.

‎+24 إلى ‎+31 = ‏16 + (8 إلى 15): تستخدم الدالة أدنى 4 بتات من القيمة كلوغاريتم لحجم النافذة، ويجب أن تتضمّن المدخلات ترويسة وتذييل gzip.

‎+40 إلى ‎+47 = ‏32 + (8 إلى 15): تستخدم الدالة أدنى 4 بتات من القيمة كلوغاريتم لحجم النافذة، وتستقبل تلقائيًا صيغة zlib أو gzip.

عند فك ضغط تدفّق معيّن من البيانات، يجب أن لا يكون حجم النافذة أصغر من الحجم المستخدم لضغط تدفق البيانات، إذ يؤدي استخدام قيمة صغيرة للغاية إلى إطلاق الاستثناء error. ترتبط قيمة wbits الافتراضية بأعلى حجم للنافذة وتتطلب تضمين ترويسة وتذييل zlib في المدخلات.

bufsize

إن كان هذا المعامل متوفّرًا، فإنّه يستخدم كحجم ابتدائي لذاكرة المخرجات.

تطلق الدالة الاستثناء error عند حدوث الأخطاء.

المعامل bufsize هو الحجم الابتدائي للذاكرة المستخدمة لتخزين البيانات مفكوكة الضغط. سيزداد حجم الذاكرة المستخدمة حسب الحاجة؛ لذا لا حاجة إلى تقديم قيمة مضبوطة لهذا المعامل، ولكنّ تعديل القيمة سيوفّر بعض الاستدعاءات للدالة malloc()‎.

ملاحظة: في الإصدار 3.6 من بايثون أصبح بالإمكان استخدام wbits و bufsize كمعاملين مفتاحيين.

القيمة المعادة

تعيد الدالة كائن bytes يحتوي على البيانات التي أزيل الضغط عنها.

انظر أيضًا

  • الدالة zlib.compress(): تضغط الدالة البايتات المعطاة، وتعيد كائن bytes يتضمّن البيانات المضغوطة.
  • الدالة zlib.compressobj(): تعيد الدالة كائن ضغط يمكن استخدامه لضغط البيانات التي لا يمكن وضعها في الذاكرة دفعة واحدة.
  • الدالة zlib.decompressobj()‎: تعيد الدالة كائن فك الضغط يمكن استخدامه لفك الضغط عن البيانات التي لا يمكن وضعها في الذاكرة دفعة واحدة.

مصادر