الوحدة 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 من اللغة.

انظر أيضًا

مصادر