الدالة zlib.compress()
في بايثون
تعيد الدالة كائن ضغط يمكن استخدامه لضغط البيانات التي لا يمكن وضعها في الذاكرة دفعة واحدة.
البنية العامة
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 (أو ما يطلق عليه "حجم النافذة") المستخدمة في ضغط البيانات، ويتحكّم كذلك فيما إذا كانت مخرجات الدالة تتضمّن ترويسة وتذييلًا.
يأخذ هذا المعامل مديات مختلفة من القيم، ويأخذ القيمة الافتراضية 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()
: تعيد الدالة كائن ضغط يمكن استخدامه لضغط البيانات التي لا يمكن وضعها في الذاكرة دفعة واحدة.
مصادر
صفحة Compression compatible with gzip في توثيق بايثون الرسمي.