Python:从tarball中解压缩一个文件夹

时间:2014-01-05 20:28:24

标签: python

鉴于包含多个目录的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()))  

...所以将所有内容全部提取到磁盘并移动必要的文件夹是不可行的。

1 个答案:

答案 0 :(得分:3)

你好像差不多了 - 我想你可以使用getnames()的内容并将它与extractfile()结合起来处理内存中的文件,例如:

import re
files = (file for file in tar.getnames() if file.startswith('rootdir/'))