Read file until specific line in python

23.3k Views Asked by At

I have one text file. I am parsing some data using regex. So open the file and read it and the parse it. But I don't want to read and parse data after some specific line in that text file. For example

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

Now I don't want to read file after SPECIFIC LINE... Is there any way to stop reading when that line reaches?

3

There are 3 best solutions below

0
On BEST ANSWER

This is pretty straight forward, you can terminate a loop early with a break statement.

filename = 'somefile.txt'

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

Using with creates a compound statement that ensures that upon entering and leaving the scope of the with statement __enter__() and __exit__() will be called respectively. For the purpose of file reading this will prevent any dangling filehandles.

The break statement tells the loop to terminate immediately.

0
On

Use iter()'s sentinel parameter:

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

output:

file start here..
some data...

Reference: https://docs.python.org/2/library/functions.html#iter

0
On

Read only first n lines without loading the whole file:

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