it-swarm.asia

بيثون: قراءة جميع خطوط الملفات النصية في حلقة

أريد أن أقرأ سطرًا ضخمًا للملف النصي سطريًا (وتوقف إذا وجد سطر به "str"). كيفية التحقق ، إذا تم الوصول إلى نهاية الملف؟

fn = 't.log'
f = open(fn, 'r')
while not _is_eof(f): ## how to check that end is reached?
    s = f.readline()
    print s
    if "str" in s: break
45
Prog1020

ليست هناك حاجة للتحقق من EOF في الثعبان ، ما عليك سوى القيام بما يلي:

with open('t.ini') as f:
   for line in f:
       print line
       if 'str' in line:
          break

لماذا العبارة with :

من الممارسات الجيدة استخدام with الكلمة الأساسية عند التعامل مع كائنات الملف. هذا له ميزة إغلاق الملف بشكل صحيح بعد انتهاء جناحه ، حتى إذا تم رفع استثناء على الطريق.

101
Ashwini Chaudhary

مجرد تكرار عبر كل سطر في الملف. Python يتحقق تلقائيًا عن نهاية الملف ويغلق الملف لك (باستخدام بناء الجملة with)).

with open('fileName', 'r') as f:
    for line in f:
       if 'str' in line:
           break
8
Sukrit Kalra

هناك مواقف لا يمكنك فيها استخدام (الإقناع التام) with... for.... في هذه الحالة ، قم بما يلي:

line = self.fo.readline()
if len(line) != 0:
     if 'str' in line:
         break

سيعمل هذا لأن readline() يترك حرفًا جديدًا في السطر ، حيث يكون EOF مجرد سلسلة فارغة.

3
Damian Vogel