2013-07-12 1 views
3

Я хотел бы сделать копию tar, с удаленными файлами (на основе их имени и, возможно, других свойств, таких как symlink или так). Поскольку у меня уже есть tar-файл, открытый в python, поэтому я хотел бы сделать это в python. Я понял, что TarFile.getmembers() возвращает список объектов TarInfo, а TarFile.addfile (tarinfo) принимает объект TarInfo. Но когда я кормлю один в другой, создается поврежденный tar (без ошибок).Добавить файлы из одного 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