Python:使用tarfile提取时忽略目录
如果我有一个 .tar 文件,里面有一个文件 '/path/to/file.txt'
,有没有办法(用 Python)把这个文件提取到指定的目录,而不需要重新创建 '/path/to'
这个目录呢?
5 个回答
2
根据tarfile模块,你可以很简单地做到这一点。 我还没有去查看具体的内容。
TarFile.extract(member, path="")
文档说明:
你可以从压缩包中提取一个文件到当前的工作目录,使用它的完整名称。提取出来的文件信息会尽可能准确。这个文件可以是文件名,也可以是一个TarInfo对象。你还可以通过path指定一个不同的目录。
所以你应该可以这样做:
TarFile.extract(member, path=".")
查看完整的文档请访问: http://docs.python.org/library/tarfile.html
16
TarInfo
对象的数据属性是可以修改的。所以你只需要把name
改成你想要的名字,然后再提取它就可以了:
import sys, os, tarfile
args = sys.argv[1:]
tar = tarfile.open(args[0])
member = tar.getmember(args[1])
member.name = os.path.basename(member.name)
path = args[2] if len(args) > 2 else ''
tar.extract(member, path)
30
我也遇到过这个问题,下面是根据ekhumoro的回答整理的完整示例。
import os, tarfile
output_dir = "."
tar = tarfile.open(tar_file)
for member in tar.getmembers():
if member.isreg(): # skip if the TarInfo is not files
member.name = os.path.basename(member.name) # remove the path by reset it
tar.extract(member,output_dir) # extract