使用以/开头的文件夹提取tar文件

时间:2012-10-12 11:32:54

标签: python archive tarfile

我在python中编写程序并使用tarfile来提取tarfiles。其中一些tarfiles包含以/开头的文件夹或(对于Windows \),这会引起问题(文件被提取到错误的位置)。我如何解决这个问题并确保提取最终到达正确的位置?

2 个答案:

答案 0 :(得分:2)

docs for tarfile明确警告这种情况。相反,您需要迭代遍历tar文件的内容并单独extract每个文件:

import os
import tarfile

extract_to = "."
tfile = tarfile.open('so.tar')

members = tfile.getmembers()
for m in members:
    if m.name[0] == os.sep:
        m.name = m.name[1:]
    tfile.extract(m, path=extract_to)

答案 1 :(得分:0)

你尝试过extractall()方法吗?我记得其中一个方法参数包含应该提取存档的信息。