Python解压缩多个.gz文件

时间:2019-01-17 13:16:23

标签: python gzip 7zip

我已使用7zip将文件压缩为几个块:

有:

foo.txt.gz.001
foo.txt.gz.002
foo.txt.gz.003
foo.txt.gz.004
foo.txt.gz.005

想要:

foo.txt

我如何使用python解压缩并合并这些块以获得单个文件?

2 个答案:

答案 0 :(得分:2)

首先,获取所有文件的列表。

files = ['/path/to/foo.txt.gz.001', '/path/to/foo.txt.gz.002', '/path/to/foo.txt.gz.003']

然后遍历每个文件并追加到结果文件中。

with open('./result.gz', 'ab') as result:  # append in binary mode
    for f in files:
        with open(f, 'rb') as tmpf:        # open in binary mode also
            result.write(tmpf.read())

然后摘录使用zipfile lib。您可以使用tempfile来避免使用临时zip文件。

答案 1 :(得分:0)

首先,您必须按顺序提取所有zip文件:

import zipfile

paths = ["path_to_1", "path_to_2" ]
extract_paths = ["path_to_extract1", "path_to_extrac2"]

for i in range(0, paths):
    zip_ref = zipfile.ZipFile(paths[i], 'r')
    zip_ref.extractall(extract_paths[i])
    zip_ref.close()

接下来,您可以转到提取的位置,并将read()的单个文件open放入string。连接这些字符串并保存到foo.txt