我需要提取一个 gz 文件,我已经从一个 FTP 站点下载到本地 Windows 文件服务器。我已经为文件的本地路径设置了变量,并且我知道 GZIP muddle 可以使用它。
GZ 文件中的文件是一个 XML 文件。
根据文件:
import gzip with gzip.open('file.txt.gz', 'rb') as f: file_content = f.read()
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)
from sh import gunzip gunzip('/tmp/file1.gz')
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开始) ,但是熊猫(从 v0.21.0开始)可以为您解压该文件!谢谢,韦斯!
pd.read_xml()
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()
如果你解压文件后解析它,不要忘记使用 解码()方法,是必要的,当你打开一个二进制文件。
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()
如果您有一个 Linux 环境,那么使用 gunzip命令很容易解压缩。 进入文件夹并给出如下
gunzip
gunzip file-name
如果您的计算机上安装了 gzip (和 gunzip)程序,一个简单的方法是从 python 调用该命令:
import os filename = 'file.txt.gz' os.system('gunzip ' + filename)
如果希望保留原始文件,可以选择使用
os.system('gunzip --keep ' + filename)
你可以用 gzip.decompress()来做:
gzip.decompress()
rb
w
utf8
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)