如何使用 python 读取压缩文件夹文件?

Posted

技术标签:

【中文标题】如何使用 python 读取压缩文件夹文件?【英文标题】:How can I read a compressed folder file using python? 【发布时间】:2015-12-12 11:47:58 【问题描述】:

我可以使用gzip 压缩单个文件,但不能使用它压缩文件夹。我用这个:

tar = tarfile.open("TarName.tar.gz", "w:gz")
tar.add("folder/location", arcname="TarName")
tar.close()

文件夹被压缩了,如何解压?或者还有其他方法可以压缩文件夹吗?对了,请添加解压方式。非常感谢

【问题讨论】:

我认为您将不得不采取类似***.com/a/1855118/2548351 中的一些方法。 @caiohamamura 非常感谢,我试试看。 您是否尝试解压缩.tar.gz 文件 @KevinGuan 我写的代码是我在网上找到的,我不知道为什么是.tar.gz,我想要的是压缩/解压缩一个文件夹。现在我还在尝试其他一些方法。 【参考方案1】:

你只需要打开 tarfile 并解压:

import tarfile

with tarfile.open("TarName.tar.gz") as tar:    
    tar.extractall()

您需要了解的所有内容都在文档中的大量 examples 中提供。 如果您担心外部文件,您可以采取this question中的一种方法

【讨论】:

非常感谢,我从您的代码中得到了正确答案。 extractall is dangerous 并且应该与不受信任的输入一起使用。 @JonasWielicki,如果 OP 正在创建文件,有什么问题?他们要求一种解压缩方法,这就是 extractall 正在做的事情以及文档示例中使用的内容 @PadraicCunningham 我想我会提到它,以防将来有人查看这个问题而没有创建文件。我们也不知道 OP 如何处理文件,例如它们是否通过不受信任的路径或类似的方式自动传输。【参考方案2】:

相反,您可以使用tarfile 库打开tar.gz 档案。 为此,您可以使用模式r:gz

Python 文档中有一个关于数据压缩和归档的部分,您可能会喜欢:https://docs.python.org/2/library/archiving.html

对于文件夹,zip 和 tar.gz 模块是标准库中的两个可用模块。

最后,我建议你看看with 关于打开/关闭模式的语句的容量。

【讨论】:

是的,你是对的,with 是打开/关闭模式的更好选择。 我已经阅读了docs,但说实话,我没有找到压缩/解压缩文件夹的方法。

以上是关于如何使用 python 读取压缩文件夹文件?的主要内容,如果未能解决你的问题,请参考以下文章

Python:如何从压缩的 json .gz 文件中读取并写入 json 文件

如何读取用 7z 压缩的文本文件?

python 如何读取大文件

java如何读取压缩包中的文本文件

如何实现,读取远程文件,用GZIP压缩后保存成文件

pyspark如何加载压缩的snappy文件