简体   繁体   中英

Using "readlines()" twice in a row

I'm trying to do something like this:

Lines = file.readlines()
# do something
Lines = file.readlines()  

but the second time Lines is empty. Is that normal?

Yes, because .readlines() advances the file pointer to the end of the file.

Why not just store a copy of the lines in a variable?

file_lines = file.readlines()
Lines = list(file_lines)
# do something that modifies Lines
Lines = list(file_lines)

It'd be far more efficient than hitting the disk twice. (Note that the list() call is necessary to create a copy of the list so that modifications to Lines won't affect file_lines .)

You need to reset the file pointer using

file.seek(0)

before using

file.readlines()

again.

In order to not have to reset every time by using seek method again and again, use the readlines method, but you must store it in variable like this example below:

%%writefile test.txt
this is a test file!
#open it
op_file = open('test.txt')
#read the file
re_file = op_file.readlines()
re_file
#output
['this is a test file!']
# the output still the same
re_file
['this is a test file!']

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM