如何使用Python在flat tar.gz中保存tar文件
我有一个具有以下结构的tar文件:如何使用Python在flat tar.gz中保存tar文件,python,gzip,tar,Python,Gzip,Tar,我有一个具有以下结构的tar文件: example.tar --file1 --file2 我想将文件另存为tar.gz,因此它看起来像: example.tar.gz --file1 --file2 我试图在TarFile模块中使用TarFile.add(),但我只创建了另一个层次结构的tar.gz文件 我只找到了两个解决方案,这似乎不是最优的: “untar”文件,然后将它们放入新的“tar.gz”文件中 从Python脚本调用以下Unix命令gzip-c example.tar>exa
example.tar
--file1
--file2
我想将文件另存为tar.gz,因此它看起来像:
example.tar.gz
--file1
--file2
我试图在TarFile
模块中使用TarFile.add()
,但我只创建了另一个层次结构的tar.gz文件
我只找到了两个解决方案,这似乎不是最优的:
gzip-c example.tar>example.tar.gz
在Python中有更好的方法吗?一个
tar.gz
文件只是一个tar
文件,它已经gzip
ped了。您必须知道,由于您编写了此Unix命令:
gzip -c example.tar > example.tar.gz
如果要在Python中执行相同的操作,只需使用库:
事实上,这直接等同于文档中的一个
这是最优的吗
- 我们正在避免使用无故障和柏油部分。这是非常简单的工作(
是一种非常简单的格式…),但不是零tar
- 显然,我们必须读取tarball的每个字节,并且您必须写入gzip tarball的每个字节,但是我们希望避免一次读取整个文件(这可能会耗尽您所有的RAM),或者一次读取太少以至于无法保持磁盘移动
会为您解决这个问题copyfileobj
因此,这与
gzip
工具所做的工作几乎完全相同。但是我们没有创建子进程,也没有依赖可能不存在的工具(例如,在Windows或iOS上,或者在一些非常奇怪的场景中,您创建了一个包含python但没有gzip的chroot)。一个tar.gz
文件只是一个tar
文件,它已经被gzip
ped。您必须知道,由于您编写了此Unix命令:
gzip -c example.tar > example.tar.gz
如果要在Python中执行相同的操作,只需使用库:
事实上,这直接等同于文档中的一个
这是最优的吗
- 我们正在避免使用无故障和柏油部分。这是非常简单的工作(
是一种非常简单的格式…),但不是零tar
- 显然,我们必须读取tarball的每个字节,并且您必须写入gzip tarball的每个字节,但是我们希望避免一次读取整个文件(这可能会耗尽您所有的RAM),或者一次读取太少以至于无法保持磁盘移动
会为您解决这个问题copyfileobj
因此,这与
gzip
工具所做的工作几乎完全相同。但是我们没有创建子进程,也没有依赖可能不存在的工具(例如,在Windows或iOS上,或者在一些非常奇怪的场景中,您创建了一个包含python但不包含gzip的chroot)。我显然错过了您提到的使用示例。这就是我一直在寻找的解决方案,谢谢,我显然错过了你提到的用法示例。这就是我一直在寻找的解决方案,谢谢