如何使用Python解压缩gz文件

时间:2015-06-24 14:05:11

标签: python python-2.7 gzip

我需要将我从FTP站点下载的gz文件解压缩到本地Windows文件服务器。我为文件的本地路径设置了变量,我知道它可以被GZIP混淆使用。

我该怎么做? GZ文件中的文件是XML文件。

9 个答案:

答案 0 :(得分:16)

From the documentation:

import gzip
f = gzip.open('file.txt.gz', 'rb')
file_content = f.read()
f.close()

答案 1 :(得分:5)

也许你想把它传递给熊猫。

with gzip.open('features_train.csv.gz') as f:

    features_train = pd.read_csv(f)

features_train.head()

答案 2 :(得分:2)

Parent Child Educated
'P1', 'C1', 'YES'
'P1', 'C2', 'YES'
'P1', 'C3', 'NO'
'P2', 'C11', 'YES'
'P2', 'C12', 'NO'
'P3', 'C21', 'YES'
'P3', 'C22', 'YES'
'P4', 'C31', 'NO'
'P4', 'C32', 'NO'

答案 3 :(得分:2)

不是一个确切的答案,因为您正在使用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()

答案 4 :(得分:2)

很简单..给你!!

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()

答案 5 :(得分:0)

如果要在解压缩文件之后解析文件,请不要忘记使用 decode()方法,当您以二进制文件形式打开文件时,这是必需的。

import gzip
with gzip.open(file.gz, 'rb') as f:
    for line in f:
        print(line.decode().strip())

答案 6 :(得分:0)

如果你有一个 linux 环境,使用命令 gunzip 很容易解压。 转到文件夹并给出如下

gunzip file-name 

答案 7 :(得分:0)

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

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

可选,如果您想保留原始文件,请使用

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

答案 8 :(得分:0)

您可以使用 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)