After reading in a file how would tell python to read the first line only?
This should do it:
f = open('myfile.txt')
first = f.readline()
with open('myfile.txt', 'r') as f:
first_line = f.readline()
Some notes, thanks to commenters:
- The with statement automatically closes the file again when the block ends.
- The with statement only works in python 2.5 and up, and in python 2.5 you need to use
from __future__ import with_statement
- In Python 3 you should specify the file encoding for the file you open. Read more...
I'm going to go ahead and spice this up a little bit:
with open('myfile.txt','r') as f:
line = f.readline()
Lots of other answers here, but to answer precisely the question you asked:
>>> f = open('myfile.txt')
>>> data = f.read()
>>> # I'm assuming you had the above before asking the question
>>> first_line = data.split('\n', 1)[0]
In other words, if you've already read in the file (as you said), and have a big block of data in memory, then to get the first line from it efficiently, do a split() on the newline character, once only, and take the first element from the resulting list.
Note that this does not include the \n
character at the end of the line, but I'm assuming you don't want it anyway (and a single-line file may not even have one). Also note that although it's pretty short and quick, it does make a copy of the data, so for a really large blob of memory you may not consider it "efficient". As always, it depends...