اذهب إلى المحتوى

السؤال

نشر

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

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

f.close

Recommended Posts

  • 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 في الدورة الأخيرة لعملية التكرار.

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...