تقنية

fileinput في بايثون: أي رقم سطر يبدأ من جديد؟

تراكمي ثلاثة ومحلي واحد
مثال مؤلف. [1] [2]

نقرأ مدخلين مؤلفين في الذاكرة. [1] [2]

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

يبدأ filelineno() مجددًا مع المدخل التالي؛ أما lineno() فتراكمي. [1] [2]

  • الأزواج هنا: 1/1، 2/2، ثم 3/1. [1] [2]
  • isfirstline() في السطر الثالث True؛ إنه أول سطر في b. [1] [2]
  • المدخل الفارغ لا يضيف أسطرًا إلى العد. [1] [2]
  • لا يلزم أن تنتهي آخر سطور المدخل بمحرف سطر جديد لتُعدّ. [1] [2]
  • اختبرنا 3.12.14 عبر openhook يعيد StringIO؛ لا ملفات قرصية. [1] [2]

المثال

import io,fileinput
data={"a":"own1\nown2\n","b":"own3\n"}
def hook(name,mode): return io.StringIO(data[name])
with fileinput.FileInput(["a","b"],openhook=hook) as f:
 for line in f:
  print(f.lineno(),f.filelineno(),f.isfirstline())

[1] [2]

عدادان مختلفان

عند الانتقال من a إلى b يحتفظ العد التراكمي بالسطرين السابقين. أول سطر جديد يعطي 3 إجمالًا و1 محليًا؛ لا تعني True أنه أول سطر في التسلسل كله. [1] [2]

أول سطر
مدخلان في الذاكرة. [1] [2]

الحدود

الأسماء تختار نصوص قاموسنا عبر دالة فتح مؤلفة. أغلق with تسلسل القراءة. لم نختبر الإدخال القياسي أو إعادة كتابة الملفات أو أخطاء القرص. [1] [2]

المراجع

  1. Python: fileinput وأرقام الأسطر
  2. CPython3.12.14: fileinput.py
  3. موضوع تك: لغة بايثون — مفردات
  4. موضوع تك: تطبيقات بايثون — مفردات

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