الوحدة zlib
في بايثون
تتطلب بعض التطبيقات استخدام البيانات المضغوطة، وتتيح الدوال المتوفّرة في هذه الوحدة إجراء عمليات الضغط وفك الضغط على البيانات باستخدام مكتبة zlib
، ولهذه المكتبة موقع إلكتروني خاص. يجدر التنبيه إلى وجود بعض المشاكل في التوافقية بين وحدة بايثون والإصدارات 1.1.3 وما دونها من مكتبة zlib
، إضافة إلى أنّ الإصدار 1.1.3 يعاني من مشاكل أمنية؛ لذا يُنصح باستخدام الإصدار 1.1.4 أو ما بعده من المكتبة.
تقدّم دوال zlib
الكثير من الخيارات وغالبًا ما يجب استخدام هذه الدوال في ترتيب معين. لا يسعى هذا التوثيق إلى المرور على جميع الاحتمالات؛ لذا يمكنك مراجعة دليل استخدام zlib
للحصول على المعلومات المطلوبة.
لقراءة ملفات .gz
والكتابة عليها راجع وحدة gzip
.
استثناءات الوحدة zlib
تقدّم الوحدة الاستثناءات التالية:
الاستثناء zlib.error
يُطلق هذا الاستثناء عند حدوث أخطاء عند ضغط البيانات وفك ضغطها.
دوال الوحدة zlib
تقدّم الوحدة الدوال التالية:
الدالة zlib.adler32()
تحسب الدالة مجموع التحقق checksum
من نوع Adler-32 للبيانات المعطاة.
الدالة zlib.compress()
تضغط الدالة البايتات المعطاة، وتعيد كائن bytes
يتضمّن البيانات المضغوطة.
الدالة zlib.compressobj()
تعيد الدالة كائن ضغط يمكن استخدامه لضغط البيانات التي لا يمكن وضعها في الذاكرة دفعة واحدة.
الدالة zlib.crc32()
تحسب الدالة مجموع تحقق من نوع CRC (التحقّق من الزيادة الدورية Cyclic Redundancy Check) للبيانات المعطاة.
الدالة zlib.decompress()
تفكّ الدالة الضغط عن البايتات في البيانات المعطاة، وتعيد كائن bytes
يحتوي على البيانات التي أزيل الضغط عنها.
الدالة zlib.decompressobj()
تعيد الدالة كائن فك الضغط يمكن استخدامه لفك الضغط عن البيانات التي لا يمكن وضعها في الذاكرة دفعة واحدة.
كائنات الضغط Compress
التابع Compress.compress()
يضغط التابع البيانات المعطاة ويعيد كائن bytes
يحتوي على البيانات المضغوطة لجزء من البيانات المعطاة على الأقل.
التابع Compress.flush()
يؤدي استدعاء هذا التابع إلى معالجة جميع المدخلات المعلّقة، ويعيد التابع كائن bytes
يحتوي على المخرجات المضغوطة المتبقية.
التابع Compress.copy()
يعيد التابع نسخة من كائن الضغط.
كائنات فك الضغط Decompress
تدعم كائنات فك الضغط الخصائص التالية:
الخاصية Decompress.unused_data
كائن bytes
يحتوي على البياتات التي تأتي بعد نهاية البيانات المضغوطة، بمعنى أنّ قيمة هذه الخاصية تبقى b""
إلى حين الوصول إلى آخر بايت يتضمّن بيانات مضغوطة. إن كانت سلسلة البايتات النصية تتضمّن بأكملها بيانات مضغوطة، فإنّ قيمة هذه الخاصية ستبقى b""
، أي كائن bytes
فارغ.
الخاصية Decompress.unconsumed_tail
كائن bytes
يتضمّن البيانات التي لم تُستهلك بواسطة آخر استدعاء للتابع decompress()
لأنّه يتجاوز الحدّ المسموح به لذاكرة البيانات المفكوكة الضغط. هذه البيانات غير مرئية بالنسبة إلى مكتبة zlib لذا يجب عليك تلقيمها (مع احتمال إلحاق المزيد من البيانات) إلى استدعاء لاحق للتابع decompress()
لتحصل على المخرجات الصحيحة.
الخاصية Decompress.eof
قيمة منطقية (بوليانية) تحدّد ما إذا تم الوصول إلى نهاية تدفّق البيانات المضغوطة.
تتيح هذه الخاصية التمييز بين تدفّق البيانات المضغوط بصورة صحيحة، وبين تدفّق البيانات الناقص أو المقتطع.
ملاحظة: هذه الخاصية جديدة في الإصدار 3.3 من بايثون.
تدعم كائنات فك الضغط التوابع التالية:
التابع Decompress.decompress()
يفكّ التابع الضغط عن البيانات المعطاة، ويعيد كائن bytes
يتضمّن البيانات مفكوكة الضغط والمرتبطة على الأقل بجزء من البيانات في السلسلة النصية string.
التابع Decompress.flush()
يؤدي استدعاء هذا التابع إلى معالجة جميع المدخلات المعلّقة، ويعيد كائن bytes
يتضمّن ما تبقّى من مخرجات غير مضغوطة.
التابع Decompress.copy()
يعيد التابع نسخة من كائن فك الضغط.
ثوابت الوحدة zlib
يمكن الحصول على معلومات حول الإصدار المستخدم من مكتبة zlib
عن طريق الثوابت التالية:
الثابت zlib.ZLIB_VERSION
سلسلة نصية تتضمّن إصدار مكتبة zlib
المستخدم لبناء الوحدة. قد يختلف هذا الإصدار عن إصدار مكتبة zlib
المستخدم في وقت التشغيل، والذي يمكن الحصول عليه بواسطة الثابت ZLIB_RUNTIME_VERSION
.
الثابت zlib.ZLIB_RUNTIME_VERSION
سلسلة نصية تتضمن الإصدار الخاصّة بمكتبة zlib
المحمّلة بواسطة مفسّر بايثون.
ملاحظة: هذا الثابت جديد في الإصدار 3.3 من اللغة.