تقنية

get_filename في zipimport: هل المسار ملف مستقل؟

ملف العضو False ومطابقة البيانات True
عضو في أرشيفنا. [1] [2] [3] [4]

نفحص get_filename في zipimport. [1] [2] [3] [4]

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

لا؛ عضو أرشيفنا ليس ملفًا مستقلًا. [1] [2] [3] [4]

  • نكتب x.py داخل a.zip. [1] [2] [3] [4]
  • يتضمن مسار get_filename الأرشيف والعضو. [1] [2] [3] [4]
  • يعطي is_file() للعضو False. [1] [2] [3] [4]
  • يطابق get_data البايتات المكتوبة؛ المقارنة True. [1] [2] [3] [4]
  • اختبرنا 3.12.14 بمصدر دون ضغط أو استخراج. [1] [2] [3] [4]
  • لا نفحص الحزم والبايتكود والتلف. [1] [2] [3] [4]

المثال

import zipfile as z,zipimport as i
from tempfile import TemporaryDirectory
from pathlib import Path
with TemporaryDirectory() as d:
 p=Path(d)/'a.zip'
 with z.ZipFile(p,'w') as a:
  a.writestr('x.py',b'a=1\n')
 m=i.zipimporter(str(p))
 q=m.get_filename('x')
 print(Path(q).is_file())
 print(m.get_data(q)==b'a=1\n')

[1] [2] [3] [4]

المخرجان False ثم True. [1] [2] [3] [4]

أين البيانات؟

المسار يشير إلى عضو داخل أرشيفنا. الأرشيف نفسه ملف؛ قراءة العضو عبر المستورد نجحت دون استخراجه إلى ملف مستقل. [1] [2] [3] [4]

الأرشيف ملف وعدد الملفات المستخرجة صفر
دون استخراج. [1] [2] [3] [4]

الحدود

عضونا مصدر مخزن دون ضغط. لا نفحص هنا حزمة أو بايتكود أو أرشيفًا تالفًا. [1] [2] [3] [4]

المراجع

  1. Python: zipimport
  2. CPython 3.12.14: zipimport.py
  3. Python: pathlib
  4. Python: zipfile
  5. موضوع تك: لغة بايثون — مفردات
  6. موضوع تك: تطبيقات بايثون — مفردات

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