Devo leggere un file di grandi dimensioni, riga per riga. Diciamo che il file ha più di 5 GB e ho bisogno di leggere ogni riga, ma ovviamente non voglio usarlo readlines()perché creerà un elenco molto grande in memoria.
Come funzionerà il codice seguente per questo caso? Si sta xreadlinesleggendo uno per uno in memoria? È necessaria l'espressione del generatore?
f = (line for line in open("log.txt").xreadlines()) # how much is loaded in memory?
f.next()
Inoltre, cosa posso fare per leggerlo in ordine inverso, proprio come il tailcomando Linux ?
Ho trovato:
http://code.google.com/p/pytailer/
e
" testa, coda e coda di pitone lette da righe di un file di testo "
Entrambi hanno funzionato molto bene!