Usando “readlines ()” due volte di seguito

Sto provando a fare qualcosa del genere:

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

ma la seconda volta Lines è vuota. È normale?

Sì, perché .readlines() avanza il puntatore del file fino alla fine del file.

Perché non archiviare semplicemente una copia delle righe in una variabile?

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

Sarebbe molto più efficiente di colpire il disco due volte. (Si noti che la chiamata a list() è necessaria per creare una copia dell’elenco in modo che le modifiche a Lines non influiscano su file_lines .)

È necessario ripristinare il puntatore del file utilizzando

 file.seek(0) 

prima di usare

 file.readlines() 

ancora.

Per non dover reimpostare ogni volta utilizzando il metodo di ricerca ancora e ancora, utilizzare il metodo readlines, ma è necessario memorizzarlo in variabili come nell’esempio seguente:

 %%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!']