前提
- 我有一个目录
/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() 中的 path
不是存档内的路径,而是您要将其解压缩到的路径,因此将 baz 放在那里将无济于事。
您可能会先调用 getmembers()
,然后将列表缩减为您想要的内容,然后调用上述提取方法之一。
关于Python:在提取过程中重命名 tar 文件中的成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8030284/