تقنية

BZ2 في بايثون: هل يحتاج باقي المخرج مدخلًا جديدًا؟

أول جزء مع باقي مخزن
مخرج محدود. [1] [2]

حد المخرج قد يترك بقية داخل الكائن. [1] [2]

الخلاصة السريعة

ليس هنا؛ بعد بلوغ الحد نستخرج الباقي بمدخل فارغ. [1] [2]

  • نضغط leaf مكررة ثلاثًا. [1] [2]
  • حد المخرج الأول أربعة بايتات؛ يعيد leaf. [1] [2]
  • تكون needs_input=False وeof=False. [1] [2]
  • المدخل b'' يعيد leafleaf؛ تصبح النهاية True. [1] [2]
  • اختبرنا 3.12.14 وتدفقًا كاملًا واحدًا. [1] [2]

المثال

import bz2
c=bz2.compress(b'leaf'*3)
d=bz2.BZ2Decompressor()
print(d.decompress(c,max_length=4))
print(d.needs_input,d.eof)
print(d.decompress(b''))
print(d.eof)

[1] [2]

الباقي المخزن

المصدر هنا يحتفظ بالباقي عند حد المخرج. المخرجات b'leaf'، ثم False False، ثم b'leafleaf'، ثم True. جمع الجزأين يعيد الأصل؛ لم نمرر بايتات مضغوطة جديدة. [1] [2]

الباقي يخرج بمدخل فارغ
اكتمل المثال. [1] [2]

النطاق

افحص eof أولًا؛ استدعاء الفك بعد النهاية يرفع EOFError، ولو بقيت needs_input=False. لا نعمم حاجتنا للمدخل الفارغ على تدفق مبتور أو كل حد للمخرج. [1] [2]

المراجع

  1. Python 3.12: BZ2Decompressor
  2. CPython 3.12.14: _bz2module.c
  3. موضوع تك: لغة بايثون — مفردات
  4. موضوع تك: تطبيقات بايثون — مفردات

للتوسع: بحث عن لغات البرمجة

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