تقنية

قارئ ZIP في بايثون: هل يوقفه إغلاق الأرشيف؟

قارئ عضو بعد إغلاق الأرشيف
تفسير توضيحي [1] [2]

قارئ ZIP المفتوح مستقل عن الأرشيف هنا. [1] [2]

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

لا؛ يظل القارئ السابق صالحًا في المثال. [1] [2]

  • نفتح قارئ bud.dat. [1] [2]
  • نغلق الأرشيف z. [1] [2]
  • f.read() تعيد b"leaf". [1] [2]
  • فتح عضو جديد من z يفشل. [1] [2]
  • إغلاق f يمنع قراءته. [1] [2]
  • 3.12.14؛ ذاكرة بلا استخراج. [1] [2]

المثال

from io import BytesIO
from zipfile import ZipFile,ZipInfo
buf=BytesIO()
with ZipFile(buf,"w") as writer:writer.writestr(ZipInfo("bud.dat"),b"leaf")
z=ZipFile(buf)
f=z.open("bud.dat")
z.close()
print(f.read())
f.close()

[1] [2]

القارئ السابق

النتيجة: b'leaf'. نجح إغلاق الأرشيف؛ لم نفتح قارئًا جديدًا بعده. العضو مخزن دون ضغط. [1] [2]

إغلاق القارئ نفسه يمنع القراءة
تفسير توضيحي [1] [2]

تحكم وحدود

z.open بعد إغلاقه يثير ValueError، وكذلك القراءة بعد إغلاق f. قراءة جزء قبل إغلاق الأرشيف تتيح إكمال الباقي. لا اختبار ملفات نظام أو تشفير أو إصدارات أخرى. [1] [2]

المراجع

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

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

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