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

6
我想从Python调用一个用C++编写并编译的程序(.exe),该可执行文件需要两个文件作为输入,并返回一个分数。我需要对多个文件进行此操作,因此我想在Python中编写一个小脚本,循环遍历多个文件,将它们传递给可执行文件,并获取返回值。
现在,我已经搜索过了,知道了SWIG和Boost::Python可能是一种选择,但我试图找到是否有更简单的方法。我不需要“扩展”C++程序,我只想像从命令行调用一样调用它,并获取返回的数字。

1
尝试这个问题:https://dev59.com/sU7Sa4cB1Zd3GeqP0Q4q - TorelTwiddler
@TorelTwiddler,这不是他想要做的--那个答案只返回返回代码,而不是程序的输出。 - agf
2个回答

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 只返回程序的返回代码,不会返回输出内容。


2
你可以使用 subprocess 模块 来完成这个任务。
result = subprocess.check_output(['your_program.exe', 'arg1', 'arg2'])

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接