2013-07-12 81 views
3

我想复制一个tar文件,其中删除了一些文件(基于它们的名称和可能的其他属性,如符号链接等)。由于我已经在python中打开了tar文件,所以我想在python中执行此操作。我知道TarFile.getmembers()返回一个TarInfo对象列表,而TarFile.addfile(tarinfo)接受一个TarInfo对象。但是当我把一个喂给另一个时,就会创建一个损坏的tar(没有错误)。将文件从一个tar文件添加到另一个python文件中

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() 

回答

4

你必须在fileobj -argument传递给addfile()

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

谢谢,这似乎为我做的。 – user2576471

+1

@ user2576471,[接受答案](http://stackoverflow.com/help/accepted-answer) – falsetru

相关问题