gpt4 book ai didi

python - 如何在python中提取gz文件

转载 作者:行者123 更新时间:2023-11-30 22:07:57 26 4
gpt4 key购买 nike

我有一个 .gz 文件,其中还有另一个文件。我需要提取压缩文件中的文件。

f = gzip.open(dest, 'rb')

这只会打开文件,但我需要下载 gz 内的特定文件,而不是仅仅打开 gz 文件。

这个问题已被标记为重复,我接受,但我还没有找到我们可以实际下载文件而不仅仅是读取其内容的解决方案。提到的链接也是如此。

最佳答案

您只需打开两个文件,从gzipped 文件中读取并写入另一个文件(以 block 的形式以避免堵塞内存)。

import gzip

def gunzip(source_filepath, dest_filepath, block_size=65536):
with gzip.open(source_filepath, 'rb') as s_file, \
open(dest_filepath, 'wb') as d_file:
while True:
block = s_file.read(block_size)
if not block:
break
else:
d_file.write(block)

否则,您可以使用 shutil,如 How to unzip gz file using Python 中的建议。 :

import gzip
import shutil

def gunzip_shutil(source_filepath, dest_filepath, block_size=65536):
with gzip.open(source_filepath, 'rb') as s_file, \
open(dest_filepath, 'wb') as d_file:
shutil.copyfileobj(s_file, d_file, block_size)

这两种解决方案都可以在 Python 2 和 3 中运行。

就性能而言,它们基本上是相当的,至少在我的系统上是这样:

%timeit gunzip(source_filepath, dest_filepath)
# 129 ms ± 1.89 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)
%timeit gunzip_shutil(source_filepath, dest_filepath)
# 132 ms ± 2.99 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)

关于python - 如何在python中提取gz文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52332897/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com