Python 解压多个 .gz 文件
Python unzip multiple .gz files
我使用 7zip 将一个文件压缩成几个块:
拥有:
foo.txt.gz.001
foo.txt.gz.002
foo.txt.gz.003
foo.txt.gz.004
foo.txt.gz.005
想要:
foo.txt
如何使用 python 将这些块解压缩并组合成一个文件?
首先,您必须按顺序解压所有 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
.
首先,获取所有文件的列表。
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())
我使用 7zip 将一个文件压缩成几个块:
拥有:
foo.txt.gz.001
foo.txt.gz.002
foo.txt.gz.003
foo.txt.gz.004
foo.txt.gz.005
想要:
foo.txt
如何使用 python 将这些块解压缩并组合成一个文件?
首先,您必须按顺序解压所有 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
.
首先,获取所有文件的列表。
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())