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

前提

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

问题

将存档中baz的内容解压缩到/ foo / bar

档案包含:

baz/
 file1.txt

源目录包含:

foo/
  bar/
    file2.txt

提取后我希望它是:

foo/
  bar/
    file1.txt
    file2.txt

迄今解决方案

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

还有其他想法吗?

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

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

您可能首先调用getmembers()然后将列表缩小到您想要的值,然后调用上述提取方法之一.

点赞