Python 如何将.tar转换为.tgz

Python 如何将.tar转换为.tgz,python,subprocess,gzip,tar,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

我正在尝试用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或其他类型的文件则不起作用

我能做什么?
谢谢。

tgz
文件只是gzip tar归档文件。和
.tar.gz
的快捷方式

  • 您可以使用
    tar cz
  • 您可以使用
    tarc
  • 您可以使用
    tarr
    taru
    将数据附加到(非压缩)归档文件中(请参见手册以了解差异)
  • 您可以使用
    gzip
    压缩归档文件
  • 但是,您不能(至少使用GNUtar)更新压缩的归档文件

如果只使用Python来完成肮脏的工作怎么办

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

更新tar包。

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

>>> tar = tarfile.open('package.tar', 'w')
>>> tar.add('new_file.txt')
>>> tar.add('new_other_file.txt')
>>> tar.close()
创建压缩的tar包

>>> import tarfile
>>> tar = tarfile.open('package.tar', 'w')
>>> tar.add('full/path/of/dir/')
>>> tar.close()
>>> tar = tarfile.open('package.tar.gz', 'w:gz')
>>> tar.add('server.db')
>>> tar.add('readme.txt')
>>> tar.close()

您是否可以将所有文件添加为tar文件(在创建步骤中没有z),然后在结束时将其gzip,当您知道您已经完成了向归档文件添加文件时?代码不是有效的Python。“向我发送错误”不是信息性的。提供完整的回溯<代码>检查调用([“tar”、“czf”、“a.tgz”、“test1”、“test2”])按原样工作——它使用
test1
test2
文件创建压缩存档。如果您想要绝对名称(在大多数情况下不需要),请使用
--绝对名称
选项。在所有文件都是.tar之后,我如何将其转换为gzip?@user2911701:您问题中的
z
选项已经创建了压缩档案。如果它与您当前的问题无关,则不要将其放在注释中,尽管我需要使用Bash命令。这是大学的工作,我需要使用tarcommandsok的子流程,明白了。无论如何,当你需要解决实际问题时,这里有一个很好的方法。