如何将.tar转换为.tgz

时间:2015-03-31 17:41:03

标签: python subprocess gzip tar

我试图用python压缩一些文件。我使用子进程,问题是我不知道如何压缩所有文件。这是我的工作:

comand = czf
saveFolder = /home/albert/a.tgz
temporal = /home/albert/test1

subprocess.call(["tar",comand,saveFolder,temporal])

如何添加更多文件?如果我尝试这样做,它会向我发送错误:

subprocess.call(["tar",comand,saveFolder,temporal1,temporal2])

subprocess.call(["tar",comand,saveFolder,temporal + temporal2])

我也尝试使用:

subprocess.call(["tar",comand,saveFolder,temporal])

然后将所有文件添加到.tar文件

subprocess.call(["tar","rvf",saveFolder,temporal])

最后一个想法的问题是我可以为.tar文件执行此操作,但使用.gzip或其他类型它不起作用。

我能做什么? 感谢。

2 个答案:

答案 0 :(得分:2)

如果你只使用Python来做脏事怎么办?

从整个目录创建tar包(未压缩)

>>> import tarfile
>>> tar = tarfile.open('package.tar', 'w')
>>> tar.add('full/path/of/dir/')
>>> tar.close()

更新tar包。

Obs。:您无法更新压缩包。必须对其进行解压缩,更新,重新压缩

>>> tar = tarfile.open('package.tar', 'w')
>>> tar.add('new_file.txt')
>>> tar.add('new_other_file.txt')
>>> tar.close()

创建压缩的tar包

>>> tar = tarfile.open('package.tar.gz', 'w:gz')
>>> tar.add('server.db')
>>> tar.add('readme.txt')
>>> tar.close()

答案 1 :(得分:1)

tgz个文件只是gzipped tar档案。和.tar.gz的快捷方式。

  • 您可以使用tar cz
  • 创建和压缩存档
  • 您可以使用tar c
  • 创建(非压缩)存档
  • 您可以使用tar rtar u附加到(非压缩)存档(请参阅该文章了解差异)
  • 您可以使用gzip来压缩存档。
  • 但是,你不能(至少使用GNU tar)更新压缩档案。