2013-07-12 80 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

相關問題