从Python调用外部程序并获取输出
我想从Python里调用一个用C++写的程序(.exe
文件),这个程序已经编译好了。这个可执行文件需要两个文件作为输入,然后会返回一个分数。
我需要对多个文件进行这个操作。所以,我想写一个小脚本,用Python循环处理这些文件,把它们传给这个可执行文件,然后获取返回的值。
我查了一下,知道SWIG和Boost::Python可能是个选择,但我想找一个更简单的方法。我并不需要“扩展”这个C++程序,我只是想像在命令行里那样调用它,然后得到返回的数字。
2 个回答
2
你可以使用这个叫做subprocess
的模块来实现这个功能。
result = subprocess.check_output(['your_program.exe', 'arg1', 'arg2'])
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
只是返回程序的返回代码,而不是输出内容。