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