鉴于包含多个目录的tarball,如何只提取一个特定的目录?
import tarfile
tar = tarfile.open("/path/to/tarfile.tar.gz")
tar.list()
... rootdir / subdir_1 / file_1.ext
... rootdir / subdir_1 / file_n.ext
... rootdir / subdir_2 / file_1.ext
等。
如何仅从subdir_2中提取文件?
注意:整个操作正在内存中进行...
import tarfile, urllib2, StringIO
data = urllib2.urlopen(url)
tar = tarfile.open(mode = 'r|*', fileobj = StringIO.StringIO(data.read()))
...所以将所有内容全部提取到磁盘并移动必要的文件夹是不可行的。
答案 0 :(得分:3)
你好像差不多了 - 我想你可以使用getnames()
的内容并将它与extractfile()结合起来处理内存中的文件,例如:
import re
files = (file for file in tar.getnames() if file.startswith('rootdir/'))