الفرق بين المراجعتين لصفحة: «Python/lzma»
لا ملخص تعديل |
|||
سطر 23: | سطر 23: | ||
== ضغط البيانات وفك الضغط عنها في الذاكرة == | == ضغط البيانات وفك الضغط عنها في الذاكرة == | ||
يمكن استخدام الصنفين التاليين لضغط البيانات وفك الضغط عنها تزايديًا: | |||
=== الصنف <code>[[Python/LZMACompressor|LZMACompressor]]</code> === | === الصنف <code>[[Python/LZMACompressor|LZMACompressor]]</code> === | ||
تنشئ هذه الدالة البانية كائن compressor جديد، ويمكن استخدام هذا الكائن لضغط البيانات تزايدياً | تنشئ هذه الدالة البانية كائن compressor جديد، ويمكن استخدام هذا الكائن لضغط البيانات تزايدياً. | ||
=== الصنف <code>[[Python/LZMADecompressor|LZMADecompressor]]</code> === | === الصنف <code>[[Python/LZMADecompressor|LZMADecompressor]]</code> === | ||
تنشئ هذه الدالة البانية كائن dcompressor يمكن استخدامه لفك الضغط عن البيانات تزايديًا. يمكن استخدام | تنشئ هذه الدالة البانية كائن dcompressor يمكن استخدامه لفك الضغط عن البيانات تزايديًا. | ||
== ضغط البيانات وفك الضغط عنها دفعة واحدة == | |||
يمكن استخدام الدالتين التاليتين لضغط البيانات وفك الضغط عنها دفعة واحدة: | |||
=== الدالة <code>[[Python/lzma/compress|lzma.compress()]]</code> === | === الدالة <code>[[Python/lzma/compress|lzma.compress()]]</code> === |
المراجعة الحالية بتاريخ 17:40، 12 نوفمبر 2018
تقدّم هذه الوحدة مجموعة من الأصناف والدوال المساعدة لإجراء عمليات ضغط البيانات وفك الضغط عنها باستخدام خوارزمية الضغط LZMA. وتتضمّن هذه الوحدة كذلك واجهة للتعامل مع الملفات ذات الامتداد .xz
و .lzma
المستخدمة بواسطة الأداة xz، إضافة إلى التعامل مع البيانات المضغوطة الخام.
تقدّم هذه الوحدة واجهة مشابهة إلى حد كبير للواجهة المقدّمة في الوحدة bz2
، ولكن يجب الانتباه إلى أنّ الصنف LZMAFile
-وعلى عكس الصنف bz2.BZ2File
- لا تتمتع بسلامة الخيوط not thread-safe؛ لذا إن احتجت إلى استخدام نسخة واحدة من الكائن LZMAFile
من مصدر متعدد الخيوط، فيجب عليك حينئذٍ أن تحمي تلك النسخة بقفل.
استثناءات الوحدة
الاستثناء lzma.LZMAError
يُطلَق هذا الاستثناء عند حدوث أخطاء أثناء عمليات الضغط وفك الضغط، أو أثناء تهيئة حالة الضغط أو فك الضغط.
قراءة الملفات المضغوطة والكتابة فيها
الدالة lzma.open()
تفتح هذه الدالة ملفًّا مضغوطًا بخوارزمية LZMA في الوضع الثنائي أو النصي، وتعيد كائن ملف.
الصنف LZMAFile
يستخدم هذا الصنف لقراءة الملفات المضغوطة والكتابة فيها.
يمكن لكائن LZMAFile
أن يغلّف كائن ملف مفتوح فعلًا، أو أن يعمل مباشرة على الملف المعطى.
ضغط البيانات وفك الضغط عنها في الذاكرة
يمكن استخدام الصنفين التاليين لضغط البيانات وفك الضغط عنها تزايديًا:
الصنف LZMACompressor
تنشئ هذه الدالة البانية كائن compressor جديد، ويمكن استخدام هذا الكائن لضغط البيانات تزايدياً.
الصنف LZMADecompressor
تنشئ هذه الدالة البانية كائن dcompressor يمكن استخدامه لفك الضغط عن البيانات تزايديًا.
ضغط البيانات وفك الضغط عنها دفعة واحدة
يمكن استخدام الدالتين التاليتين لضغط البيانات وفك الضغط عنها دفعة واحدة:
الدالة 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
.
انظر أيضًا
- الوحدة
bz2
: تقدّم هذه الوحدة واجهة متكاملة لضغط البيانات وفك الضغط عنها باستخدام خوارزمية الضغط bzip2.