完全なパス「/home/usr/path/to/file」を持つファイルを含む「tafile」があります。ファイルを現在のフォルダーに抽出すると、完全なパスが再帰的に作成されます。ベース名のみでファイルを抽出する方法はありますか。
3950 次
3 に答える
4
から取得したオブジェクトをarcnamesハッキングすることで、 を変更できます。次に、 を使用して、選択した宛先に新しい名前でメンバーを書き込むことができます。TarInfoTarfile.getmembers()Tarfile.extractall
たとえば、次の関数は、アーカイブの任意のサブツリーからメンバーを選択し、それらのベース名で宛先に抽出します。
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)
がディレクトリ内のいくつかのメンバーを持つアーカイブを表すインスタンスであり、それらtarのメンバーをディレクトリに折りたたみたいとします。あなたがすることができます:TarFileutilities/misclocal/bin
extractTo(tar, 'local/bin', 'utilities/misc/')
/ディレクトリプレフィックスの末尾に注意してください。miscディレクトリを「local/bin」に追加するのではなく、そのメンバーだけを追加します。
于 2013-03-02T05:59:15.457 に答える
3
それを使用TarFile.extractfile()して、選択したファイルに書き込みます。
于 2011-05-27T08:07:43.227 に答える
0
ニーズに合わせて機能extractallを使用できます。ドキュメントによると、アーカイブからすべてのメンバーを現在の作業ディレクトリまたはディレクトリ パスに抽出します。
TarFile.extractall(path="my/path")
于 2011-05-27T08:09:27.433 に答える