前提
- 我有一个目录
/foo/bar - 我有一个包含目录的 tar 文件
baz
问题
baz将存档中的内容提取到/foo/bar
例子
档案包含:
巴兹/ 文件1.txt
源目录包含:
富/
酒吧/
文件2.txt
提取后我希望它是:
富/
酒吧/
文件1.txt
文件2.txt
到目前为止的解决方案
提取到一个临时目录,然后将其内容移动baz到目标位置,因为我的baz目录将始终具有相同的名称,所以这是可行的。
还有其他想法吗?
您可以使用tarfile库的extract()、extractall()或extractfile()方法。您应该能够以这种方式访问存档中的非顶级对象。
请注意,pathin extractall() 不是存档内的路径,而是您要将其提取到的路径,因此将 baz 放在那里无济于事。
您可能会先调用getmembers()然后将列表缩减为您想要的,然后调用上述提取方法之一。