我使用python的tarfile模块提取tarball。我不想把提取的文件写在磁盘上,而是直接通过管道传输到另一个程序,特别是bgzip。我也在尝试使用StringIO来解决这个问题,但是我甚至在那个阶段也会被卡住-tarball会被提取到磁盘上。在
#!/usr/bin/env python
import tarfile, StringIO
tar = tarfile.open("6genomes.tgz", "r:gz")
def enafun(members):
for tarkati in tar:
if tarkati.isreg():
yield tarkati
reles = StringIO.StringIO()
reles.write(tar.extractall(members=enafun(tar)))
tar.close()
那么如何正确地管道输出所有的焦油提取?在
您不能使用extractall方法,但可以使用getmembers和extractfile方法:
根据文档,extractfile()方法可以接受一个TarInfo并将返回一个类似于文件的对象。然后可以使用read()获取该文件的内容。在
[编辑]我添加了您在注释中要求我的内容,因为注释中的格式似乎无法正确呈现。在
^{pr2}$相关问题 更多 >
编程相关推荐