Re-open files in Python?

Question:

Say I have this simple python script:

file = open('C:\some_text.txt')
print file.readlines()
print file.readlines()

When it is run, the first print prints a list containing the text of the file, while the second print prints a blank list. Not completely unexpected I guess. But is there a way to ‘wind back’ the file so that I can read it again? Or is the fastest way just to re-open it?

Asked By: c00kiemonster

||

Answers:

You can reset the file pointer by calling seek():

file.seek(0)

will do it. You need that line after your first readlines(). Note that file has to support random access for the above to work.

Answered By: Alok Singhal

For small files, it’s probably much faster to just keep the file’s contents in memory

file = open('C:\some_text.txt')
fileContents = file.readlines()
print fileContents
print fileContents # This line will work as well.

Of course, if it’s a big file, this could put strain on your RAM.

Answered By: Smashery

Remember that you can always use the with statement to open and close files:

from __future__ import with_statement

with open('C:\some_text.txt') as file:
    data = file.readlines()
#File is now closed
for line in data:
    print line
Answered By: MattyW
Categories: questions Tags: ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.