Python: 在解压tar文件时重命名成员
前提
- 我有一个文件夹
/foo/bar
- 我有一个压缩文件,里面包含一个文件夹
baz
问题
我想把压缩文件里的 baz
文件夹的内容提取到 /foo/bar
这个文件夹里。
示例
这个压缩文件里包含:
baz/ file1.txt
源文件夹里有:
foo/ bar/ file2.txt
提取后我希望变成:
foo/ bar/ file1.txt file2.txt
目前的解决方案
可以先把内容提取到一个临时文件夹,然后再把 baz
文件夹里的内容移动到目标位置,这样可以,因为 baz
文件夹的名字是固定的。
还有其他的想法吗?
1 个回答
3
你可以使用 tarfile 库里的 extract()
、extractall()
或 extractfile()
方法来提取文件。这样你就可以访问压缩包里非顶层的文件了。
需要注意的是,extractall()
中的 path
不是压缩包内部的路径,而是你想要把文件提取到的路径。所以如果你在这里填上 baz 是没有用的。
你可能需要先调用 getmembers()
方法,然后把列表缩减到你想要的文件,最后再调用上面提到的提取方法之一。