• 0

كيف أقرأ سطرين من ملف في نفس الوقت باستخدام بايثون؟

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

f = open(filename, "r")
for line in f:
    line1 = line
    line2 = f.readline()

f.close

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
  • 0

يوجد العديد من الطرق لفعل ذلك في بايثون، لكن الخطأ في المثال الذي وضعته هو أنه لا يمكنك الخلط بين عملية التكرار وreadline، بل يجب استخدام كل واحدة منهما بطريقة منفصلة واستبدال for بحلقة تكرار while كما في هذا المثال:
while True:

    line1 = f.readline()
    line2 = f.readline()
    if not line2: break  # EOF
    ...

أو يمكنك استخدام دوال مكتبة itertools مع حلقة تكرار for كما في المثال التالي:

import itertools
with open('a') as f:
    for line1,line2 in itertools.izip_longest(*[f]*2):
        print(line1,line2)

إذا كان هنالك عدد فردي من الأسطر في الملف فستحصل في السطر الثاني على None في الدورة الأخيرة لعملية التكرار.

1 شخص أعجب بهذا

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة

يجب أن تكون عضوًا لدينا لتتمكّن من التعليق

انشاء حساب جديد

يستغرق التسجيل بضع ثوان فقط


سجّل حسابًا جديدًا

تسجيل الدخول

تملك حسابا مسجّلا بالفعل؟


سجّل دخولك الآن