web-dev-qa-db-fra.com

python: lire des lignes à partir de fichiers texte compressés

Est-il facile de lire une ligne d'un fichier texte compressé avec gz en utilisant python sans extraire complètement le fichier? J'ai un fichier text.gz qui fait environ 200 Mo. Lorsque je l'extrait, il devient 7.4 Go. Et ce n'est pas le seul fichier que je dois lire. Pour tout le processus, je dois lire 10 fichiers. Bien que ce soit un travail séquentiel, je pense que ce sera une chose intelligente de le faire sans extraire toutes les informations . Je ne sais même pas si c'est possible. Comment faire avec python? J'ai besoin de lire un fichier texte ligne par ligne.

55

Avez-vous essayé d'utiliser gzip.GzipFile ? Les arguments sont similaires à open.

16
jrennie

Utilisation de gzip.GzipFile :

import gzip

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

Remarque: gzip.open(filename, mode) est un alias pour gzip.GzipFile(filename, mode). Je préfère le premier, car il ressemble à with open(...) as f: utilisé pour ouvrir des fichiers non compressés.

58
fferri

Vous pouvez utiliser le module gzip standard en python. Utilisez simplement:

gzip.open('myfile.gz')

pour ouvrir le fichier comme tout autre fichier et lire ses lignes.

Plus d'informations ici: module gzip Python

44
smichak