الدالة zlib.decompress()
في بايثون
تفكّ الدالة الضغط عن البايتات في البيانات المعطاة، وتعيد كائن 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()
: تعيد الدالة كائن فك الضغط يمكن استخدامه لفك الضغط عن البيانات التي لا يمكن وضعها في الذاكرة دفعة واحدة.