web-dev-qa-db-fra.com

Comment décompresser un fichier gz avec Python

J'ai besoin d'extraire un fichier gz que j'ai téléchargé d'un site FTP sur un serveur de fichiers Windows local. J'ai les variables définies pour le chemin local du fichier, et je sais qu'il peut être utilisé par GZIP embrouillé.

Comment puis-je faire ceci? Le fichier à l'intérieur du fichier GZ est un fichier XML.

41
Darkdeamon
import gzip
import shutil
with gzip.open('file.txt.gz', 'rb') as f_in:
    with open('file.txt', 'wb') as f_out:
        shutil.copyfileobj(f_in, f_out)
75
Matt

de la documentation:

import gzip
f = gzip.open('file.txt.gz', 'rb')
file_content = f.read()
f.close()
20
heinst

Peut-être que vous voulez le transmettre à pandas également.

with gzip.open('features_train.csv.gz') as f:

    features_train = pd.read_csv(f)

features_train.head()
7
Feiyang.Chen
from sh import gunzip

gunzip('/tmp/file1.gz')
2
perfecto25

Ce n'est pas une réponse exacte car vous utilisez des données XML et qu'il n'y a actuellement pas de fonction pd.read_xml() (à partir de v0.23.4), mais pandas (à partir de v0.21.0) peut décompresser le fichier pour vous! Merci Wes!

import pandas as pd
import os
fn = '../data/file_to_load.json.gz'
print(os.path.isfile(fn))
df = pd.read_json(fn, lines=True, compression='gzip')
df.tail()
2
whs2k