如何在Python中检索程序输出?

Geo*_*off 3 c++ python perl

我不是Perl用户,但从这个问题推断出使用类似于以下内容的东西检索通过Perl脚本执行的程序的标准输出非常容易:

$version = `java -version`;  
Run Code Online (Sandbox Code Playgroud)

我如何在Python中获得相同的最终结果?以上行是否也检索标准错误(相当于C++ std :: cerr)和标准log(std :: clog)输出?如果没有,我如何检索那些输出流?

谢谢,杰夫

pkh*_*pkh 7

对于python 2.5:遗憾的是,没有.您需要使用子进程:

import subprocess
proc = subprocess.Popen(['java', '-version'], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
out, err = proc.communicate()
Run Code Online (Sandbox Code Playgroud)

文档位于http://docs.python.org/library/subprocess.html


jfs*_*jfs 6

在Python 2.7+中

from subprocess import check_output as qx

output = qx(['java', '-version'])
Run Code Online (Sandbox Code Playgroud)

系统命令输出捕获为字符串问题的答案具有Python <2.7的实现.