الوحدة lzma
في بايثون
تقدّم هذه الوحدة مجموعة من الأصناف والدوال المساعدة لإجراء عمليات ضغط البيانات وفك الضغط عنها باستخدام خوارزمية الضغط LZMA. وتتضمّن هذه الوحدة كذلك واجهة للتعامل مع الملفات ذات الامتداد .xz و .lzma المستخدمة بواسطة الأداة xz، إضافة إلى التعامل مع البيانات المضغوطة الخام.
تقدّم هذه الوحدة واجهة مشابهة إلى حد كبير للواجهة المقدّمة في الوحدة bz2، ولكن يجب الانتباه إلى أنّ الصنف LZMAFile -وعلى عكس الصنف bz2.Bz2File- لا تتمتع بسلامة الخيوط not thread-safe؛ لذا إن احتجت إلى استخدام نسخة واحدة من الكائن LZMAFile من مصدر متعدد الخيوط، فيجب عليك حينئذٍ أن تحمي تلك النسخة بقفل.
استثناءات الوحدة
الاستثناء lzma.LZMAError
يُطلَق هذا الاستثناء عند حدوث أخطاء أثناء عمليات الضغط وفك الضغط، أو أثناء تهيئة حالة الضغط/فك الضغط.
قراءة الملفات المضغوطة والكتابة فيها
الدالة lzma.open()
تفتح هذه الدالة ملفًّا مضغوطًا بخوارزمية LZMA في الوضع الثنائي أو النصي، وتعيد كائن ملف.
الصنف LZMAFile
يستخدم هذا الصنف لقراءة الملفات المضغوطة والكتابة فيها.
يمكن لكائن LZMAFile أن يغلّف كائن ملف مفتوح فعلًا، أو أن يعمل مباشرة على الملف المعطى.
ضغط البيانات وفك الضغط عنها في الذاكرة
الصنف LZMACompressor
تنشئ هذه الدالة البانية كائن compressor جديد، ويمكن استخدام هذا الكائن لضغط البيانات تزايدياً. راجع توثيق الدالة compress() لضغط البيانات دفعة واحدة.
الصنف LZMADecompressor
تنشئ هذه الدالة البانية كائن dcompressor يمكن استخدامه لفك الضغط عن البيانات تزايديًا. يمكن استخدام الدالة decompress() لفك الضغط عن البيانات دفعة واحدة.
الدالة lzma.compress()
تضغط الدالة البيانات المعطاة.
الدالة lzma.decompress()
تفكّ الدالة الضغط عن البيانات المعطاة.
دوال متنوّعة
الدالة lzma.is_check_supported()
تتحقّق الدالة ممّا إذا كان اختبار السلامة مدعومًا من قبل نظام التشغيل.
تحديد سلاسل ترشيح مخصّصة
محدّد سلسلة الترشيح هو تسلسل من القواميس يتضمّن كل واحد منها معرّف مرشّح واحد والخيارات الخاصّة بذلك المرشح. يجب أن يتضمّن كل قاموس على مفتاح 'id' ويمكن أن يتضمّن مفاتيح إضافية لتحديد الخيارات الخاصّة بالمرشّح.
يمكن استخدام معرّفات المرشّحات التالية:
مرشحات الضغط: FILTER_LZMA1 (يستخدم هذا المرشّح مع التنسيق FORMAT_ALONE). FILTER_LZMA2 (يستخدم هذا المرشّح مع التنسيق FORMAT_XZ و FORMAT_RAW).
مرشحات Delta:
FILTER_DELTA مرشّحات Branch-Call-Jump يرمز اختصارًا (BCJ):
FILTER_X86 FILTER_IA64 FILTER_ARM FILTER_ARMTHUMB FILTER_POWERPC FILTER_SPARC
يمكن لسلسلة الترشيح أن تتضمّن 4 مرشّحات كحدّ أقصى، ولا يمكن أن تكون فارغة، ويجب أن يكون آخر مرشّح في السلسلة مرشّح ضغط، ويجب أن تكون المرشّحات الأخرى من نوع delta أو BCJ.
تدعم مرشّحات الضغط الخيارات التالية (يمكن تحديدها كمدخلات إضافية في القاموس الذي يمثّل المرشّح):
preset: إعدادات ضغط مسبقة يمكن استخدامها كمصدر للقيم الافتراضية في الخيارات التي لم تحدّد لها قيمة تصريحًا. dict_size: حجم القاموس بالبايتات. يجب أن تتدرّج القيمة بين 4 KiB و 1.5 GiB (ضمنيًا). lc: عدد بتات السياق الحرفية literal context bits. lp: عدد بتات الموقع الحرفية literal position bits. يجب أن لا يتجاوز مجموع قيمتي lc و lp العدد 4. pb: عدد بتات الموقع، يجب أن لا يتجاوز العدد 4. mode: إحدى القيمتين MODE_FAST أو MODE_NORMAL. nice_len: ما يجب أن يعدّ "طولًا مناسبًا" للتطابق. يجب أن يأخذ هذا الخيار القيمة 273 وما دونها. mf: الأداة المستخدمة للبحث عن التطابقات: MF_HC3، MFHC4، MF_BT2، MF_BT3، MF_BT4. depth: أقصى عمق للبحث المستخدم بواسطة الأداة التي تبحث عن التطابقات. 0 (القيمة الافتراضية) يعني أن يكون الاختيار تلقائيًا وذلك بالاستناد إلى خيارات المرشّح الأخرى.
يخزّن المرشح delta الفوارق بين البايتات، وينتج مدخلات أكثر تكرارية لعملية الضغط في بعض الحالات. يدعم هذا المرشّح خيارًا واحدًا وهو dist. ويشير هذا الخيار إلى المسافة بين البايتات التي ستطرح من بعضها البعض. القيمة الافتراضية هي 1 ويعني أنّ قياس الفارق سيكون بين البايتات المتجاورة.
أعدّت مرشّحات BCJ لتطبيقها في شيفرة الآلة، وتحوّل هذه المرشّحات التفرّعات النسبية وتستدعي وتتنقّل في الشيفرة لاستخدام طريقة الوصول المطلقة، وتهدف إلى زيادة التكرارات المستغلّة من قبل عملية الضغط. تدعم مرشّحات BCJ خيارًا واحدًا وهو start_offset. يحدّد هذا الخيار العنوان الذي يجب ربطه ببداية البيانات المدخلة، والقيمة الافتراضية له هي 0.
انظر أيضًا
- الوحدة
gzip
في بايثون: تقدّم هذه الوحدة واجهة بسيطة لضغط الملفات وفك ضغطها بنفس الأسلوب المتّبع في برنامجي gzip و gunzip في GNU.