Ich muss eine gz-Datei extrahieren, die ich von einer FTP-Site auf einen lokalen Windows-Dateiserver heruntergeladen habe. Ich habe die Variablen für den lokalen Pfad der Datei festgelegt und weiß, dass sie von GZIP muddle verwendet werden können.
Wie kann ich das machen? Die Datei in der GZ-Datei ist eine XML-Datei.
python
python-2.7
gzip
Darkdeamon
quelle
quelle
Antworten:
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)
quelle
shutil.copyfileobj()
einen dritten Parameter hatlength
: "Die Ganzzahllänge ist, falls angegeben, die Puffergröße. Insbesondere bedeutet ein negativer Längenwert, dass die Daten kopiert werden, ohne die Quelldaten in Blöcken zu durchlaufen. Standardmäßig werden die Daten in Blöcken in gelesen Vermeiden Sie unkontrollierten Speicherverbrauch. "Aus der Dokumentation:
import gzip f = gzip.open('file.txt.gz', 'rb') file_content = f.read() f.close()
quelle
Vielleicht möchten Sie es auch an Pandas weitergeben.
with gzip.open('features_train.csv.gz') as f: features_train = pd.read_csv(f) features_train.head()
quelle
Keine genaue Antwort, da Sie XML-Daten verwenden und derzeit keine
pd.read_xml()
Funktion (ab Version 0.23.4) vorhanden ist, aber Pandas (ab Version 0.21.0) können die Datei für Sie dekomprimieren! Danke 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()
quelle
Wenn Sie die Datei nach dem Entpacken analysieren, vergessen Sie nicht, die decode () -Methode zu verwenden. Dies ist erforderlich, wenn Sie eine Datei als Binärdatei öffnen.
import gzip with gzip.open(file.gz, 'rb') as f: for line in f: print(line.decode().strip())
quelle
from sh import gunzip gunzip('/tmp/file1.gz')
quelle
sh
nicht Teil der Standardinstallation ist.