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 

3 Solutions collect form web for “Python: чтение всех строк текстового файла в цикле”

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

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

Почему заявление с :

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

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

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

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

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

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

Python - лучший язык программирования в мире.