我有一个具有以下结构的tar文件:
example.tar
--file1
--file2
并且我要将文件另存为tar.gz,因此它看起来像:
example.tar.gz
--file1
--file2
我尝试在TarFile.add()
模块中使用tarfile
,但是我只设法用另一个层次结构创建tar.gz文件。
我设法只找到了两个解决方案,这似乎并不是最佳选择:
gzip -c example.tar > example.tar.gz
调用以下Unix命令在Python中是否有一种连击方式?
答案 0 :(得分:2)
tar.gz
文件只是经过tar
操作的gzip
文件。如您所知,您已经编写了以下Unix命令:
gzip -c example.tar > example.tar.gz
如果要在Python中执行相同的操作,只需使用gzip
库:
with open('example.tar', 'rb') as inf, gzip.open('example.tar.gz', 'wb') as outf:
shutil.copyfileobj(inf, outf)
实际上,这直接等同于文档中的Examples of Usage之一。
这是最佳选择吗?
tar
是一种非常简单的格式…),但不是零。copyfileobj
会为您解决这个问题。因此,它与gzip
工具几乎完全相同。但是我们不是在创建子进程,也不在依赖可能不存在的工具(例如,在Windows或iOS上,或者在某些非常奇怪的情况下,您创建的chroot具有python但没有gzip )。