Python:在提取期间重命名tar文件中的成员

时间:2011-11-06 20:49:58

标签: python tarfile

前提

  • 我有一个目录/foo/bar
  • 我有一个包含目录baz
  • 的tar文件

问题

将档案中的baz内容提取到/foo/bar

实施例

档案包含:

baz/
 file1.txt

源目录包含:

foo/
  bar/
    file2.txt

提取后我希望它是:

foo/
  bar/
    file1.txt
    file2.txt

到目前为止的解决方案

提取到临时目录,然后将baz的内容移动到目标位置,这是有效的,因为baz目录将始终具有相同的名称。

还有其他想法吗?

1 个答案:

答案 0 :(得分:2)

您可以使用tarfile库的extract()extractall()extractfile()方法。您应该能够以这种方式访问​​存档中的非顶级对象。

请注意,extractall()中的path不是归档中的路径,而是要将其提取到的路径,因此将baz放在那里将无济于事。

您可能先打电话getmembers(),然后将列表缩小到您想要的位置,然后调用上述提取方法之一。