Мне нужно извлечь файл gz, который я загрузил с FTP-сайта, на локальный файловый сервер Windows. У меня есть переменные, заданные для локального пути к файлу, и я знаю, что это может использоваться путаницей GZIP.
Как я могу это сделать? Файл внутри файла GZ - это файл XML.
python
python-2.7
gzip
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)
источник
shutil.copyfileobj()
него есть третий параметрlength
: «Целочисленная длина, если задана, представляет собой размер буфера. В частности, отрицательное значение длины означает копирование данных без циклического перебора исходных данных по частям; по умолчанию данные считываются фрагментами для избегать неконтролируемого потребления памяти ".Из документации:
import gzip f = gzip.open('file.txt.gz', 'rb') file_content = f.read() f.close()
источник
Может быть, вы хотите передать его также пандам.
with gzip.open('features_train.csv.gz') as f: features_train = pd.read_csv(f) features_train.head()
источник
Не точный ответ, потому что вы используете xml-данные и в настоящее время нет
pd.read_xml()
функции (начиная с v0.23.4), но pandas (начиная с v0.21.0) может распаковать файл за вас! Спасибо, Вес!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()
источник
Если вы разбираете файл после его распаковки, не забудьте использовать метод decode () , который необходим, когда вы открываете файл как двоичный.
import gzip with gzip.open(file.gz, 'rb') as f: for line in f: print(line.decode().strip())
источник
from sh import gunzip gunzip('/tmp/file1.gz')
источник
sh
это не входит в стандартную установку.