Читать файл до определенной строки в python

У меня есть один текстовый файл. Я анализирую некоторые данные, используя регулярное выражение. Итак, откройте файл, прочитайте его и проанализируйте. Но я не хочу читать и анализировать данные после определенной строки в этом текстовом файле. Например

file start here..
some data...
SPECIFIC LINE
some data....

Теперь я не хочу читать файл после КОНКРЕТНОЙ СТРОКИ... Есть ли способ остановить чтение, когда эта строка достигает?


person SAM    schedule 25.11.2014    source источник
comment
Да, но что вы будете делать с файлом после этого?   -  person Ignacio Vazquez-Abrams    schedule 25.11.2014
comment
Цикл for с break? Это довольно стандартно ... можете ли вы показать нам свои усилия, чтобы мы могли помочь вам, а не просто просить, чтобы мы сделали это для вас?   -  person g.d.d.c    schedule 25.11.2014


Ответы (3)


Это довольно просто, вы можете завершить цикл раньше с помощью оператора break.

filename = 'somefile.txt'

with open(filename, 'r') as input:
   for line in input:
       if 'indicator' in line:
            break

Использование with создает составной оператор, который гарантирует, что при входе и выходе из области видимости Операторы with __enter__() и __exit__() будут вызываться соответственно. В целях чтения файлов это предотвратит любые оборванные файловые дескрипторы.

Оператор break указывает циклу немедленно завершиться.

person Mike McMahon    schedule 25.11.2014

Используйте параметр sentinel iter():

with open('test.txt') as f:
    for line in iter(lambda: f.readline().rstrip(), 'SPECIFIC LINE'):
        print(line)

выход:

file start here..
some data...

Ссылка: https://docs.python.org/2/library/functions.html#iter

person Raymond    schedule 03.01.2017

Читать только первые n строки без загрузки всего файла:

n = 5
with open(r'C:\Temp\test.txt', encoding='utf8') as f:
    head = [next(f) for x in range(n)]
person ZygD    schedule 31.03.2021