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
Ответы
Ответ 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 - это просто пустая строка.