Capturing output from Popen
也许我需要的是对
1 2 3 4 5 6 7 8 9 10 11 | from itertools import combinations from subprocess import Popen for pair in combinations(all_ssu, 2): Popen( ['blastn', '-query', 'tmp/{0}.fna'.format(pair[0]), '-subject', 'tmp/{0}.fna'.format(pair[1]), '-outfmt', '6 qseqid sseqid pident' ], ) |
...它看起来效果很好(注意:
在查看文档和其他一些问题之后,看起来
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | from itertools import combinations from subprocess import Popen for pair in combinations(all_ssu, 2): out_file = open('tmp.txt', 'rw') Popen( ['blastn', '-query', 'tmp/{0}.fna'.format(pair[0]), '-subject', 'tmp/{0}.fna'.format(pair[1]), '-outfmt', '6 qseqid sseqid pident' ], stdout=out_file ) for line in out_file.readlines(): print line out_file.close() |
这似乎也有效,除了我创建了我不需要的临时文件。我尝试将变量
所以问题是:我如何直接从
从Python 2.7开始,您可以使用 -
它将执行的命令的输出作为字节串返回。
示例 -
1 2 3 4 5 6 | >>> import subprocess >>> s = subprocess.check_output(["echo","Hello World!"], shell=True) >>> s b'"Hello World!" ' |
我不得不在我的窗口上使用
试试这个:
1 2 3 4 5 6 7 8 9 10 11 12 | from itertools import combinations from subprocess import Popen, PIPE for pair in combinations(all_ssu, 2): out = Popen( ['blastn', '-query', 'tmp/{0}.fna'.format(pair[0]), '-subject', 'tmp/{0}.fna'.format(pair[1]), '-outfmt', '6 qseqid sseqid pident' ], stdout=PIPE ).communicate[0] print(out) |
从如何在python中获得终端输出?
STDOUT只是程序的标准输出,即程序打印的任何内容都将写入的文件。
如果您希望输出作为列表,那么您可以在循环之前创建一个空列表(