我想制作一份 tar 的副本,删除一些文件(基于它们的名称以及可能的其他属性,如符号链接等)。因为我已经在 python 中打开了 tar 文件,所以我想在 python 中执行此操作。我知道 TarFile.getmembers() 返回 TarInfo 对象的列表,而 TarFile.addfile(tarinfo) 接受 TarInfo 对象。但是,当我将一个输入另一个时,会创建一个损坏的焦油(没有错误)。
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()
你必须通过fileobj
- 论证addfile() http://docs.python.org/2/library/tarfile.html#tarfile.TarFile.addfile:
newtar.addfile(member, oldtar.extractfile(member.name))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)