擅长:python、mysql、java
<p>您可以通过破解从<code>Tarfile.getmembers()</code>获得的<code>TarInfo</code>对象来更改<code>arcnames</code>。然后,您可以使用<code>Tarfile.extractall</code>将成员以新名称写入您选择的目的地。在</p>
<p>例如,以下函数将从存档文件的任意子树中选择成员,并将其提取到基名称下的目标位置:</p>
<pre><code>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)
</code></pre>
<p>假设<code>tar</code>是一个<code>TarFile</code>实例,该实例表示在<code>utilities/misc</code>目录中包含一些成员的存档,并且您希望将这些成员折叠到<code>local/bin</code>目录中。你可以:</p>
^{pr2}$
<p>注意目录前缀后面的<code>/</code>。我们不想将<code>misc</code>目录添加到“local/bin”,而只想添加它的成员。在</p>