如何从子进程读取输出而不打印到终端?

时间:2014-02-14 20:31:05

标签: python subprocess

我已经彻底搜索了答案,但没有找到任何解决方案。

我只需要暂时执行子进程来打印其版本信息。如果从命令行运行,它只是

.\bin\application.exe --version

并将版本信息打印到终端。我想用字符串捕获那些信息。我一直在尝试

的变体
args = ("path\to\application.exe", "--version")
subprocess.Popen(args, stdout=subprocess.PIPE).communicate()[0]

没有成功。如果可能的话,我还需要将输出打印到终端。我该怎么办?

1 个答案:

答案 0 :(得分:3)

有时应用程序会将版本信息转储到STDERR而不是STDOUT。

你可以像这样捕捉:

args = ("path\to\application.exe", "--version")
subprocess.Popen(args, stdout=subprocess.PIPE, stderr=subprocess.STDOUT).communicate()[0]