我需要将从FTP站点下载的gz文件提取到本地Windows文件服务器。我已经设置了变量以用于文件的本地路径,并且知道它可以通过GZIP工具使用。
我该如何做? GZ文件内部的文件是XML文件。
我该如何做? GZ文件内部的文件是XML文件。
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
:*"如果提供了整数长度,则它是缓冲区大小。特别地,负值长度意味着直接复制数据而不需要分块循环源数据。默认情况下会分块读取数据以避免非受控制的内存消耗。"* - norok2import gzip
with gzip.open('file.txt.gz', 'rb') as f:
file_content = f.read()
with gzip.open('features_train.csv.gz') as f:
features_train = pd.read_csv(f)
features_train.head()
from sh import gunzip
gunzip('/tmp/file1.gz')
sh
不是标准安装的一部分。 - Noumenon因为你正在使用xml数据,目前还没有pd.read_xml()
函数(截至v0.23.4),所以我的回答并不完全准确。但是,从pandas v0.21.0开始,它可以帮助你解压文件!感谢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()
如果您在解压缩后解析文件,请不要忘记使用decode()方法。当您将文件以二进制方式打开时,这是必需的。
import gzip
with gzip.open(file.gz, 'rb') as f:
for line in f:
print(line.decode().strip())
非常简单..下面就是方法!!
import gzip
#path_to_file_to_be_extracted
ip = sample.gzip
#output file to be filled
op = open("output_file","w")
with gzip.open(ip,"rb") as ip_byte:
op.write(ip_byte.read().decode("utf-8")
wf.close()
gzip.decompress()
来完成此操作:
rb
模式读取输入文件;w
模式和utf8
编码打开输出文件;gzip.decompress()
输入字节;str
。str
写入输出文件。def decompress(infile, tofile):
with open(infile, 'rb') as inf, open(tofile, 'w', encoding='utf8') as tof:
decom_str = gzip.decompress(inf.read()).decode('utf-8')
tof.write(decom_str)
import os
filename = 'file.txt.gz'
os.system('gunzip ' + filename)
如果您想保留原始文件,可以选择使用
os.system('gunzip --keep ' + filename)
如果您有Linux环境,使用命令gunzip
解压非常容易。
进入文件夹并执行以下操作:
gunzip file-name