如何解压缩 gz 文件使用 Python

我需要提取一个 gz 文件,我已经从一个 FTP 站点下载到本地 Windows 文件服务器。我已经为文件的本地路径设置了变量,并且我知道 GZIP muddle 可以使用它。

GZ 文件中的文件是一个 XML 文件。

235371 次浏览

根据文件:

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开始)可以为您解压该文件!谢谢,韦斯!

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 file-name

如果您的计算机上安装了 gzip (和 gunzip)程序,一个简单的方法是从 python 调用该命令:

import os
filename = 'file.txt.gz'
os.system('gunzip ' + filename)

如果希望保留原始文件,可以选择使用

os.system('gunzip --keep ' + filename)

你可以用 gzip.decompress()来做:

  1. 使用 rb模式读取输入文件;
  2. 使用 w模式和 utf8编码打开输出文件;
  3. gzip.decompress()输入字节;
  4. 把你得到的解码到 str
  5. 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)