在python中将一个tar中的文件添加到另一个tar中

时间:2013-07-12 13:41:58

标签: python tar

我想制作tar的副本,删除一些文件(基于它们的名称和可能的其他属性,如symlink等)。因为我已经在python中打开了tar文件,所以我想在python中执行此操作。我知道TarFile.getmembers()返回一个TarInfo对象列表,TarFile.addfile(tarinfo)接受一个TarInfo对象。但是当我将一个送入另一个时,会创建一个损坏的tar(没有错误)。

import tarfile

oldtar=tarfile.open('/tmp/old.tar',"r")
newtar=tarfile.open('/tmp/new.tar',"w")
for member in oldtar.getmembers():
    if not member.name == 'dev/removeme.txt':
        newtar.addfile(member)
    else:
        print "Skipped", member.name
newtar.close()
oldtar.close()

1 个答案:

答案 0 :(得分:6)

您必须将fileobj - 参数传递给addfile()

newtar.addfile(member, oldtar.extractfile(member.name))