如何在python中提取gz文件

安德鲁

我有一个.gz文件,里面还有另一个文件。我需要将文件解压缩到压缩文件中。

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

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

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

norok2

您可以打开两个文件,从文件中读取gzipped并写入另一个文件(以块为单位,以避免阻塞内存)。

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按照如何使用Python解压缩gz文件中的建议使用

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)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何从python中的文件中提取数据

如何在Java中提取tar文件?

如何在Java中提取.war文件?ZIP与JAR

Python:从tar.gz中提取具有模式的特定文件,而无需提取完整文件

如何在python中提取文件数据

如何在python中的文件处理中从namedtuple中提取数据

如何在python中的txt文件中提取数字

从损坏的GZ中提取文件

在.GZ文件中提取.JSON文件的内容

如何在Python中从文本文件中提取特定数据?

Python 3:从tar.gz存档中提取文件

如何从tar.gz中提取特定文件

如何在Windows中提取大量GZ文件

如何从大型tar.gz存档中提取单个文件夹?

如何在终端中提取档案到文件系统?

如何在python中提取大日志文件的行

如何在 for 循环中(在 python 中)从 word 文档的文件名中提取特定名称?

如何从 gz 文件中提取特定文本?

如何在Java中提取写入文件中的数据的结尾

从python中的tar存档中提取压缩的gz文件

如何在python的不同目录中提取zip文件?

如何在 Python 中使用 OpenSSL 从 pfx 文件中提取密钥?

如何在tkinter windows python中显示从excel文件中提取的matplotlib图形

如何在 Python 中的 zip 文件中提取 tar.gz 文件的成员

给定 Colab 中的文件夹路径,如何在 python 中提取其中的特定部分?

如何从json文件中提取数据python

Os.walk 使用 python 从所有子目录中提取 .gz 文件

如何在 Python 中的目录中提取每个文件的“上次修改时间”?

如何在 C++ 中提取文件中的数字?