前提
>我有一个目录/ 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()然后将列表缩小到您想要的值,然后调用上述提取方法之一.