Using “readlines()” twice in a row

后端 未结 3 524
旧时难觅i
旧时难觅i 2020-11-30 15:22

I\'m trying to do something like this:

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

but the second time Lines

相关标签:
3条回答
  • 2020-11-30 16:02

    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!']
    
    0 讨论(0)
  • 2020-11-30 16:07

    You need to reset the file pointer using

    file.seek(0)
    

    before using

    file.readlines()
    

    again.

    0 讨论(0)
  • 2020-11-30 16:14

    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.)

    0 讨论(0)
提交回复
热议问题