从python调用外部程序并获取其输出

时间:2011-09-29 23:53:33

标签: python call subprocess

我想从Python调用一个用C ++编写并编译的程序(.exe)。可执行文件将两个文件作为输入并返回分数。

我需要为多个文件执行此操作。所以,我想在python中编写一个小脚本,它循环遍历多个文件,将它们传递给可执行文件并获取值。

现在,我已经完成了我的搜索,我知道SWIG和Boost :: Python可能是一个选项,但我试图找到是否有更简单的方法。我不需要'扩展'C ++程序。我只是想从命令行调用它并获取返回的数字。

2 个答案:

答案 0 :(得分:5)

要运行外部程序并获取其输出,请在Python 2.7+上使用subprocess.check_output。文档中的示例:

>>> subprocess.check_output(["ls", "-l", "/dev/null"])
'crw-rw-rw- 1 root root 1, 3 Oct 18  2007 /dev/null\n'

check_call只返回程序的返回码,而不是输出。

答案 1 :(得分:2)

您可以使用the subprocess module

result = subprocess.check_output(['your_program.exe', 'arg1', 'arg2'])