def extractTo(tar, dest, selector):
if type(selector) is str:
prefix = selector
selector = lambda m: m.name.startswith(prefix)
members = [m for m in tar.getmembers() if selector(m)]
for m in members:
m.name = os.path.basename(m.name)
tar.extractall(path = dest, members = members)
您可以使用函数
extractall
来满足您的需要。根据the documentation: 将存档中的所有成员提取到当前工作目录或目录路径。使用^{} 并将其写入您选择的文件中。在
您可以通过破解从
Tarfile.getmembers()
获得的TarInfo
对象来更改arcnames
。然后,您可以使用Tarfile.extractall
将成员以新名称写入您选择的目的地。在例如,以下函数将从存档文件的任意子树中选择成员,并将其提取到基名称下的目标位置:
假设
^{pr2}$tar
是一个TarFile
实例,该实例表示在utilities/misc
目录中包含一些成员的存档,并且您希望将这些成员折叠到local/bin
目录中。你可以:注意目录前缀后面的
/
。我们不想将misc
目录添加到“local/bin”,而只想添加它的成员。在相关问题 更多 >
编程相关推荐