الصنف lzma.LZMACompressor في بايثون

من موسوعة حسوب
اذهب إلى التنقل اذهب إلى البحث


تنشئ هذه الدالة البانية كائن compressor جديد، ويمكن استخدام هذا الكائن لضغط البيانات تزايدياً. راجع توثيق الدالة compress()‎ لضغط البيانات دفعة واحدة.

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

lzma.LZMACompressor(format=FORMAT_XZ, check=-1, preset=None, filters=None)

المعاملات

يحدّد المعامل format نوع تنسيق الحاوية الذي يجب استخدامه، ويأخذ القيم التالية:

  • FORMAT_XZ: تنسيق الحاوية ‎.xz هذا هو التنسيق الافتراضي.
  • FORMAT_ALONE: تنسيق الحاوية ‎.lzma القديم.

هذا التنسيق أكثر محدودية من التنسيق ‎.xz، ولا يدعم اختبارات السلامة integrity checks أو المرشحات المتعددة multiple filters.

  • Format_RAW: تدفق بيانات خام، ولا يستخدم تنسيق حاوية.

لا يدعم هذا التنسيق اختبارات السلامة، ويتطلب دائمًا تحديد سلسلة ترشيح خاصة (لعمليتي الضغط وفك الضغط) إلى جانب عدم إمكانية فك الضغط عن البيانات المضغوطة بهذه الصيغة بواسطة الصيغة FORMAT_AUTO. (راجع كائن LZMADecompressor).

check

يحدّد هذا المعامل نوع اختبار السلامة integrity check الذي سيُضمَّن في البيانات المضغوطة، ويستخدم هذا الاختبار عند إجراء عملية فك الضغط وذلك لضمان عدم تعرّض البيانات للتلف. ويمكن لهذا المعامل أن يأخذ إحدى القيم التالية:

  • CHECK_NONE: لا يوجد اختبار للسلامة، وهذه هي القيمة الافتراضية (والقيمة الوحيدة المقبولة) للصيغتين FORMAT_ALONE و FORMAT_RAW.
  • CHECK_CRC32: اختبار التكرار الدوري 32-بت.
  • CHECK_CRC64: اختبار التكرار الدوري 64-بت، وهذه هي القيمة الافتراضية للصيغة FORMAT_XZ.
  • CHECK_CRC256: خوارزمية التقطيع الآمن 256-بت.

إن كان الاختبار المحدد غير مدعوم من قبل الصيغة، تُطلق اللغة الاستثناء LZMAError.

يمكن تحديد إعدادات الضغط إما باستخدام مستوى ضغط معدّ مسبقًا (باستخدام المعامل preset) أو بالتفصيل كسلسلة ترشيح مخصّصة (باستخدام المعامل filters).

في حال توفّر قيمة للمعامل preset فيجب أن تتدرج بين 0 و 9 (ضمنيًا)، ويمكن إضافة الثابت PRESET_EXTREME باستخدام المعامل OR. في حال عدم توفّر قيمة للمعامل preset أو filters فإنّ السلوك الافتراضية يقضي باستخدام الثابت PRESET_DEFAULT (المستوى 6 المعدّ مسبقًا). تنتج الإعدادت المسبقة ذات الأرقام الأعلى مخرجات أصغر، ولكنّها تجعل عملية الضغط أبطأ.

ملاحظة:

تتطلّب عمليات الضغط التي تستخدم إعدادات مسبقة ذات قيمة عالية قدرة معالجة عالية جدًّا إضافة إلى استهلاكها لمقدار كبير من الذاكرة (وتنتج عن هذه العمليات مخرجات تحتاج إلى المزيد من الذاكرة لفك الضغط عنها). فعلى سبيل المثال قد يصل استهلاك الكائن LZMACompressor للذاكرة مع الإعداد المسبق 9 إلى 800 MiB؛ لذا يُنصح عمومًا باستخدام الإعدادات الافتراضية.

filter

يجب أن تكون قيمة هذا المعامل (في حال توفرها) محدّد سلسلة ترشيح filter chain specifier.

راجع موضوع تحديد سلاسل ترشيح مخصصة للمزيد من التفاصيل.

توابع الصنف LZMACompressor

تقدّم كائنات LZMACompressor التوابع التالية:

التابع compress()‎

يقدّم التابع البيانات المعطاة إلى كائن compressor، ويعيد البيانات المضغوطة إن أمكن ذلك، وإلا فإنه يعيد سلسلة بايتات فارغة.

التابع flush()‎

يتمّ التابع عملية الضغط، ويعيد البيانات المضغوطة المتبقية في ذاكرة التخزين الداخلية internal buffer.

مصادر