Possible Duplicate:
Get last n lines of a file with Python, similar to tail
Read a file in reverse order using pythonlectura pitón sólo el final del texto enorme presentar
Tengo un archivo que está alrededor de 15 GB de tamaño, se trata de un archivo de registro que se supone que debo analizar la salida de. Ya hice un análisis básico de un archivo similar pero GRANDEMENTE más pequeño, con solo algunas líneas de registro. El análisis de cadenas es no el problema. El problema es el gran archivo y la cantidad de datos redundantes que contiene.
Básicamente estoy intentando hacer un script de python que pueda decir; por ejemplo, dame 5000 últimas líneas del archivo. Eso es una vez más el manejo básico de los argumentos y todo eso, nada especial allí, puedo hacer eso.
Pero, ¿cómo puedo definir o decirle al lector de archivos que SÓLO lea la cantidad de líneas que especifiqué desde el final del archivo? Estoy tratando de omitir la cantidad de líneas huuuuuuge al principio de un archivo ya que no estoy interesado en eso y para ser honesto, leer alrededor de 15GB de líneas de un archivo txt lleva demasiado tiempo. ¿Hay alguna manera de equivocarse ... empezar a leer desde ... el final del archivo? ¿Eso tiene sentido?
Todo se reduce a la cuestión de leer un archivo de 15 GB, línea por línea lleva demasiado tiempo. Así que quiero omitir los datos ya redundantes (redundantes para mí al menos) al principio y solo leer la cantidad de líneas del final del archivo que quiero leer.
La respuesta obvia es copiar manualmente N cantidad de líneas del archivo a otro archivo, pero ¿hay alguna manera de hacerlo semi-auto-mágicamente solo para leer la cantidad N de líneas desde el final del archivo con python ?
¿Qué sistema operativo está utilizando? –
No es una respuesta directa, pero si está usando nix, puede aceptar la entrada de stdin y simplemente enviar los datos usando 'tail hugefile.txt -n1000 | python myprog.py' – moopet
Ver las respuestas en la pregunta duplicada. El primero es relativamente independiente de la plataforma, el segundo funciona bien en los sistemas basados en UNIX (utilizando el comando 'tail' como se sugiere @moopet). –