Necesito leer un archivo grande, línea por línea. Digamos que el archivo tiene más de 5GB y necesito leer cada línea, pero obviamente no quiero usarlo readlines()porque creará una lista muy grande en la memoria.
¿Cómo funcionará el siguiente código para este caso? ¿Está xreadlinesleyendo uno por uno en la memoria? ¿Se necesita la expresión del generador?
f = (line for line in open("log.txt").xreadlines()) # how much is loaded in memory?
f.next()
Además, ¿qué puedo hacer para leer esto en orden inverso, al igual que el tailcomando Linux ?
Encontré:
http://code.google.com/p/pytailer/
y
" cabeza de pitón, cola y lectura hacia atrás por líneas de un archivo de texto "
¡Ambos funcionaron muy bien!