Подтвердить что ты не робот

Python: чтение всех строк текстового файла в цикле

Я хочу прочитать огромный текстовый файл по строкам (и остановится, если найдена строка с "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
4b9b3361

Ответ 1

Нет необходимости проверять EOF в python, просто выполните:

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

Почему оператор with:

Хорошей практикой является использование ключевого слова with при работе с файлом объекты. Это имеет то преимущество, что файл правильно закрывается после его набор заканчивается, даже если в пути возникает исключение.

Ответ 2

Просто перебирайте каждую строку в файле. Python автоматически проверяет конец файла и закрывает файл для вас (используя синтаксис with).

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

Ответ 3

Существуют ситуации, когда вы не можете использовать (довольно убедительную) структуру with... for.... В этом случае сделайте следующее:

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

Это будет работать, потому что readline() оставляет символ новой строки, где EOF - это просто пустая строка.