الفرق بين المراجعتين لصفحة: «Python/zlib»
أنشأ الصفحة ب'تتطلب بعض التطبيقات استخدام البيانات المضغوطة، وتتيح الدوال المتوفّرة في هذه الوحدة إجراء ع...' |
لا ملخص تعديل |
||
سطر 1: | سطر 1: | ||
تتطلب بعض التطبيقات استخدام البيانات المضغوطة، وتتيح الدوال المتوفّرة في هذه الوحدة إجراء عمليات الضغط وفك الضغط على البيانات باستخدام مكتبة | تتطلب بعض التطبيقات استخدام البيانات المضغوطة، وتتيح الدوال المتوفّرة في هذه الوحدة إجراء عمليات الضغط وفك الضغط على البيانات باستخدام مكتبة <code>zlib</code>، ولهذه المكتبة [http://www.zlib.net/ موقع إلكتروني خاص]. يجدر التنبيه إلى وجود بعض المشاكل في التوافقية بين وحدة بايثون والإصدارات 1.1.3 وما دونها من مكتبة <code>zlib</code>، إضافة إلى أنّ الإصدار 1.1.3 يعاني من مشاكل أمنية؛ لذا يُنصح باستخدام الإصدار 1.1.4 أو ما بعده من المكتبة. | ||
تقدّم دوال zlib الكثير من الخيارات وغالبًا ما يجب استخدام هذه الدوال في ترتيب معين. لا يسعى هذا التوثيق إلى المرور على جميع الاحتمالات؛ لذا يمكنك مراجعة دليل استخدام zlib للحصول على المعلومات المطلوبة. | تقدّم دوال <code>zlib</code> الكثير من الخيارات وغالبًا ما يجب استخدام هذه الدوال في ترتيب معين. لا يسعى هذا التوثيق إلى المرور على جميع الاحتمالات؛ لذا يمكنك مراجعة دليل استخدام <code>zlib</code> للحصول على المعلومات المطلوبة. | ||
لقراءة ملفات .gz والكتابة عليها راجع وحدة gzip. | لقراءة ملفات <code>.gz</code> والكتابة عليها راجع [[Python/gzip|وحدة <code>gzip</code>]]. | ||
== استثناءات الوحدة zlib == | == استثناءات الوحدة <code>zlib</code> == | ||
تقدّم الوحدة الاستثناءات التالية: | تقدّم الوحدة الاستثناءات التالية: | ||
سطر 17: | سطر 17: | ||
تقدّم الوحدة الدوال التالية: | تقدّم الوحدة الدوال التالية: | ||
=== الدالة <code>zlib.adler32()</code> === | === الدالة <code>[[Python/zlib/adler32|zlib.adler32()]]</code> === | ||
تحسب الدالة مجموع التحقق checksum من نوع Adler-32 للبيانات المعطاة. | تحسب الدالة مجموع التحقق <code>checksum</code> من نوع Adler-32 للبيانات المعطاة. | ||
=== الدالة <code>zlib.compress()</code> === | === الدالة <code>[[Python/zlib/compress|zlib.compress()]]</code> === | ||
تضغط الدالة البايتات المعطاة، وتعيد كائن bytes يتضمّن البيانات المضغوطة. | تضغط الدالة البايتات المعطاة، وتعيد [[Python/bytes|كائن <code>bytes</code>]] يتضمّن البيانات المضغوطة. | ||
=== الدالة <code>zlib.compressobj()</code> === | === الدالة <code>[[Python/zlib/compressobj|zlib.compressobj()]]</code> === | ||
تعيد الدالة كائن ضغط يمكن استخدامه لضغط البيانات التي لا يمكن وضعها في الذاكرة دفعة واحدة. | تعيد الدالة كائن ضغط يمكن استخدامه لضغط البيانات التي لا يمكن وضعها في الذاكرة دفعة واحدة. | ||
=== الدالة <code>zlib.crc32()</code> === | === الدالة <code>[[Python/zlib/crc32|zlib.crc32()]]</code> === | ||
تحسب الدالة مجموع تحقق من نوع CRC (التحقّق من الزيادة الدورية Cyclic Redundancy Check) للبيانات المعطاة. | تحسب الدالة مجموع تحقق من نوع CRC (التحقّق من الزيادة الدورية Cyclic Redundancy Check) للبيانات المعطاة. | ||
=== الدالة <code>zlib.decompress()</code> === | === الدالة <code>[[Python/zlib/decompress|zlib.decompress()]]</code> === | ||
تفكّ الدالة الضغط عن البايتات في البيانات المعطاة، وتعيد كائن bytes يحتوي على البيانات التي أزيل الضغط عنها. | تفكّ الدالة الضغط عن البايتات في البيانات المعطاة، وتعيد [[Python/bytes|كائن <code>bytes</code>]] يحتوي على البيانات التي أزيل الضغط عنها. | ||
=== الدالة <code>zlib.decompressobj()</code> === | === الدالة <code>[[Python/zlib/decompressobj|zlib.decompressobj()]]</code> === | ||
تعيد الدالة كائن فك الضغط يمكن استخدامه لفك الضغط عن البيانات التي لا يمكن وضعها في الذاكرة دفعة واحدة. | تعيد الدالة كائن فك الضغط يمكن استخدامه لفك الضغط عن البيانات التي لا يمكن وضعها في الذاكرة دفعة واحدة. | ||
سطر 43: | سطر 43: | ||
== كائنات الضغط Compress == | == كائنات الضغط Compress == | ||
=== التابع <code>Compress.compress()</code> === | === التابع <code>[[Python/Compress/compress|Compress.compress()]]</code> === | ||
يضغط التابع البيانات المعطاة ويعيد كائن bytes يحتوي على البيانات المضغوطة لجزء من البيانات المعطاة على الأقل. | يضغط التابع البيانات المعطاة ويعيد [[Python/bytes|كائن <code>bytes</code>]] يحتوي على البيانات المضغوطة لجزء من البيانات المعطاة على الأقل. | ||
=== التابع <code>Compress.flush()</code> === | === التابع <code>[[Python/Compress/flush|Compress.flush()]]</code> === | ||
يؤدي استدعاء هذا التابع إلى معالجة جميع المدخلات المعلّقة، ويعيد التابع كائن bytes يحتوي على المخرجات المضغوطة المتبقية. | يؤدي استدعاء هذا التابع إلى معالجة جميع المدخلات المعلّقة، ويعيد التابع [[Python/bytes|كائن <code>bytes</code>]] يحتوي على المخرجات المضغوطة المتبقية. | ||
=== التابع <code>Compress.copy()</code> === | === التابع <code>[[Python/Compress/copy|Compress.copy()]]</code> === | ||
يعيد التابع نسخة من كائن الضغط. | يعيد التابع نسخة من كائن الضغط. | ||
سطر 61: | سطر 61: | ||
=== الخاصية <code>Decompress.unused_data</code> === | === الخاصية <code>Decompress.unused_data</code> === | ||
كائن bytes يحتوي على البياتات التي تأتي بعد نهاية البيانات المضغوطة، بمعنى أنّ قيمة هذه الخاصية تبقى b"" إلى حين الوصول إلى آخر بايت يتضمّن بيانات مضغوطة. إن كانت سلسلة البايتات النصية تتضمّن بأكملها بيانات مضغوطة، فإنّ قيمة هذه الخاصية ستبقى b"" | [[Python/bytes|كائن <code>bytes</code>]] يحتوي على البياتات التي تأتي بعد نهاية البيانات المضغوطة، بمعنى أنّ قيمة هذه الخاصية تبقى <code>b""</code> إلى حين الوصول إلى آخر بايت يتضمّن بيانات مضغوطة. إن كانت سلسلة البايتات النصية تتضمّن بأكملها بيانات مضغوطة، فإنّ قيمة هذه الخاصية ستبقى <code>b""</code>، أي [[Python/bytes|كائن <code>bytes</code>]] فارغ. | ||
=== الخاصية <code>Decompress.unconsumed_tail</code> === | === الخاصية <code>Decompress.unconsumed_tail</code> === | ||
كائن bytes يتضمّن البيانات التي لم تُستهلك بواسطة آخر استدعاء للتابع decompress() لأنّه يتجاوز الحدّ المسموح به لذاكرة البيانات المفكوكة الضغط. هذه البيانات غير مرئية بالنسبة إلى مكتبة zlib لذا يجب عليك تلقيمها (مع احتمال إلحاق المزيد من البيانات) إلى استدعاء لاحق للتابع | [[Python/bytes|كائن <code>bytes</code>]] يتضمّن البيانات التي لم تُستهلك بواسطة آخر استدعاء للتابع <code>[[Python/Decompress/decompress|decompress()]]</code> لأنّه يتجاوز الحدّ المسموح به لذاكرة البيانات المفكوكة الضغط. هذه البيانات غير مرئية بالنسبة إلى مكتبة zlib لذا يجب عليك تلقيمها (مع احتمال إلحاق المزيد من البيانات) إلى استدعاء لاحق للتابع <code>[[Python/Decompress/decompress|decompress()]]</code> لتحصل على المخرجات الصحيحة. | ||
=== الخاصية <code>Decompress.eof</code> === | === الخاصية <code>Decompress.eof</code> === | ||
قيمة منطقية (بوليانية) تحدّد ما إذا تم الوصول إلى نهاية تدفّق البيانات المضغوطة. | [[Python/bool|قيمة منطقية (بوليانية)]] تحدّد ما إذا تم الوصول إلى نهاية تدفّق البيانات المضغوطة. | ||
تتيح هذه الخاصية التمييز بين تدفّق البيانات المضغوط بصورة صحيحة، وبين تدفّق البيانات الناقص أو المقتطع. | تتيح هذه الخاصية التمييز بين تدفّق البيانات المضغوط بصورة صحيحة، وبين تدفّق البيانات الناقص أو المقتطع. | ||
'''ملاحظة:''' هذه الخاصية جديدة في الإصدار 3.3 من بايثون. | '''ملاحظة:''' هذه الخاصية جديدة في الإصدار 3.3 من بايثون. | ||
=== التابع <code>Decompress.decompress()</code> === | === التابع <code>[[Python/Decompress/decompress|Decompress.decompress()]]</code> === | ||
يفكّ التابع الضغط عن البيانات المعطاة، ويعيد كائن bytes يتضمّن البيانات مفكوكة الضغط والمرتبطة على الأقل بجزء من البيانات في السلسلة النصية string. | يفكّ التابع الضغط عن البيانات المعطاة، ويعيد [[Python/bytes|كائن <code>bytes</code>]] يتضمّن البيانات مفكوكة الضغط والمرتبطة على الأقل بجزء من البيانات في السلسلة النصية string. | ||
=== التابع <code>Decompress.flush()</code> === | === التابع <code>[[Python/Decompress/flush|Decompress.flush()]]</code> === | ||
يؤدي استدعاء هذا التابع إلى معالجة جميع المدخلات المعلّقة، ويعيد كائن bytes يتضمّن ما تبقّى من مخرجات غير مضغوطة. | يؤدي استدعاء هذا التابع إلى معالجة جميع المدخلات المعلّقة، ويعيد [[Python/bytes|كائن <code>bytes</code>]]<nowiki/>يتضمّن ما تبقّى من مخرجات غير مضغوطة. | ||
=== التابع <code>Decompress.copy()</code> === | === التابع <code>[[Python/Decompress/copy|Decompress.copy()]]</code> === | ||
يعيد التابع نسخة من كائن فك الضغط. | يعيد التابع نسخة من كائن فك الضغط. | ||
سطر 90: | سطر 91: | ||
يمكن الحصول على معلومات حول الإصدار المستخدم من مكتبة zlib عن طريق الثوابت التالية: | يمكن الحصول على معلومات حول الإصدار المستخدم من مكتبة zlib عن طريق الثوابت التالية: | ||
zlib.ZLIB_VERSION | === الثابت <code>zlib.ZLIB_VERSION</code> === | ||
سلسلة نصية تتضمّن إصدار مكتبة <code>zlib</code> المستخدم لبناء الوحدة. قد يختلف هذا الإصدار عن إصدار مكتبة <code>zlib</code> المستخدم في وقت التشغيل، والذي يمكن الحصول عليه بواسطة الثابت <code>ZLIB_RUNTIME_VERSION</code>. | |||
=== الثابت <code>zlib.ZLIB_RUNTIME_VERSION</code> === | |||
سلسلة نصية تتضمن الإصدار الخاصّة بمكتبة <code>zlib</code> المحمّلة بواسطة مفسّر بايثون. | |||
ملاحظة: هذا الثابت جديد في الإصدار 3.3 من اللغة. | |||
== انظر أيضًا == | |||
* [[Python/gzip|وحدة <code>gzip</code> في بايثون.]] | |||
== مصادر == | == مصادر == | ||
* [https://docs.python.org/3/library/zlib.html صفحة Compression compatible with gzip في توثيق بايثون الرسمي.] | * [https://docs.python.org/3/library/zlib.html صفحة Compression compatible with gzip في توثيق بايثون الرسمي.] | ||
[[تصنيف:Python]] | [[تصنيف:Python]] | ||
[[تصنيف:Python Modules]] | [[تصنيف:Python Modules]] |
مراجعة 15:27، 21 أكتوبر 2018
تتطلب بعض التطبيقات استخدام البيانات المضغوطة، وتتيح الدوال المتوفّرة في هذه الوحدة إجراء عمليات الضغط وفك الضغط على البيانات باستخدام مكتبة 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 من اللغة.