python: leer líneas de archivos de texto comprimidos


¿Es fácil leer una línea de un archivo de texto comprimido gz usando python sin extraer el archivo por completo? Tengo un mensaje.archivo gz que es de alrededor de 200mb. Cuando lo extraigo, se convierte en 7.4 gb. Y este no es el único archivo que tengo que leer. Para el proceso total, tengo que leer 10 archivos. Aunque este será un trabajo secuencial, creo que será una cosa inteligente hacerlo sin extarcting toda la información. Ni siquiera sé que es posible. ¿Cómo se puede hacer usando python? Necesito lee un archivo de texto línea por línea.

Author: delete_this_account, 2012-05-12

3 answers

¿Ha intentado usar gzip?GzipFile ? Los argumentos son similares a open.

 12
Author: jrennie,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-05-12 19:04:55

Podría usar el módulo gzip estándar en python. Solo use:

gzip.open('myfile.gz')

Para abrir el archivo como cualquier otro archivo y leer sus líneas.

Más información aquí: Módulo Python gzip

 41
Author: smichak,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-05-12 19:10:21

Usando gzip.GzipFile :

import gzip

with gzip.open('input.gz','rt') as f:
    for line in f:
        print('got line', line)

Nota: gzip.open(filename, mode) es un alias para gzip.GzipFile(filename, mode). Prefiero el primero, ya que se ve similar a with open(...) as f: utilizado para abrir archivos sin comprimir.

 36
Author: fferri,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-07-23 15:18:34