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

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


تعيد الدالة كائن ضغط يمكن استخدامه لضغط البيانات التي لا يمكن وضعها في الذاكرة دفعة واحدة.

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

zlib.compressobj(level=-1, method=DEFLATED, wbits=MAX_WBITS, memLevel=DEF_MEM_LEVEL, strategy=Z_DEFAULT_STRATEGY[, zdict])

‎المعاملات

level

المعامل level هو عدد صحيح ضمن النطاق 0 إلى 9 أو ‎-1 ووظيفته هي التحكم في مستوى عملية الضغط، فالقيمة 1 تقابل المستوى(Z_BEST_SPEED) وهو الأسرع ويعطي أقل مقدار من الضغط، والقيمة 9تقابل المستوى(Z_BEST_COMPRESSION) وهو الأبطأ وينتج أكبر مقدار من الضغط. أما القيمة 0 فتقابل المستوى (Z_NO_COMPRESSION) فتعني عدم ضغط البيانات. القيمة الافتراضية لهذا المعامل هي ‎-1 وتقابل ‎(Z_DEFAULT_COMPRESSION)‎ وتقدّم هذه القيمة حالة من التوازن بين السرعة ومقدار الضغط (تكافئ هذه القيمة المستوى 6 في الوقت الحاضر).

method

خوارزمية الضغط التي تستخدمها الدالة. يدعم هذا المعامل في الوقت الحاضر قيمة واحدة فقط هي DEFLATED.

wbits

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

يأخذ هذا المعامل مديات مختلفة من القيم، ويأخذ القيمة الافتراضية 15 (MAX_WBITS):

‎+9 إلى ‎+15: لوغاريتم ذو الأساس 2 لحجم النافذة، والذي يتدرّج تبعًا لذلك بين 512 و 32768. تنتج القيم الأكبر عمليات ضغط أفضل على حساب استهلاك مقدار أكبر من الذاكرة. وستتضمّن المخرجات الناتجة ترويسة وتذييلًا خاصّين بمكتبة zlib.

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

‎+25 إلى ‎+31 = ‏16 + (9 إلى 15)

تستخدم الدالة أدنى 4 بتات من القيمة كلوغاريتم لحجم النافذة، وتضيف إلى المخرجات ترويسة وتذييل gzip الأساسيتين.

memLevel

يتحكّم المعامل بمقدار الذاكرة المستخدم لحالة الضغط الداخلية. تتدرج قيم هذا المعامل بين 1 و 9، حيث تستخدم القيم العالية المزيد من الذاكرة ولكنّها تكون ذات سرعة أعلى وتعطي مخرجات ذات حجم أصغر.

strategy

يستخدم المعامل strategy لضبط خوارزمية الضغط. يأخذ المعامل إحدى القيم التالية: Z_DEFAULT_STRATEGY، Z_FILTERED، Z_HUFFMAN_ONLY، Z_RLE (في الإصدار 1.2.0.1 من مكتبة zlib) والقيمة Z_FIXED (في الإصدار 1.2.2.2 من مكتبة zlib).

zdict

هو قاموس ضغط معرّف مسبقًا، وهو عبارة عن تسلسل من البايتات (كأن يكون كائن بايتات) يتضمّن تسلسلات فرعية يُتوقّع أن تظهر بصورة دورية في البيانات المراد ضغطها. يجب أن تكون التسلسلات الفرعية التي يُتوقّع أن تكون الأكثر ظهورًا في نهاية القاموس.

ملاحظة: أضيف المعامل zdict في الإصدار 3.3 من اللغة وأصبح بالإمكان استخدام المعاملات المفتاحية.

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

تعيد الدالة كائن bytes يتضمّن البيانات المضغوطة.

تطلق الدالة استثناءً في حال حدوث أيّ خطأ خلال عملية الضغط.

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

انظر أيضًا

  • الدالة zlib.compress()‎: تضغط الدالة البايتات المعطاة، وتعيد كائن bytes يتضمّن البيانات المضغوطة..

مصادر