2011-09-29 22 views
5

Quiero llamar a un programa (.exe), que está escrito en C++ y compilado, desde Python. El ejecutable toma como entrada dos archivos y devuelve una puntuación.Llamar al programa externo desde python y obtener su salida

Necesito hacer esto para varios archivos. Entonces, me gustaría escribir una pequeña secuencia de comandos en Python que recorre múltiples archivos, los pasa al ejecutable y recupera los valores.

Ahora, he hecho mi búsqueda y sé sobre SWIG y Boost :: Python puede ser una opción, pero estaba tratando de encontrar si hay una manera más fácil. No necesito 'extender' el programa C++. Simplemente quiero llamarlo como lo haría desde una línea de comando y obtener el número devuelto.

+1

Pruebe esta pregunta: http://stackoverflow.com/questions/2919783/python-calling-a-non-python-program-from-python – TorelTwiddler

+0

@TorelTwiddler que no es lo que él quiere hacer, esa respuesta simplemente devuelve el código de retorno, no el resultado del programa. – agf

+0

El duplicado correcto es [¿Qué es un buen equivalente al subproceso de python.check_call que devuelve el contenido de stdout?] (Http://stackoverflow.com/questions/2924310/whats-a-good-equivalent-to-pythons-subprocess- check-call-that-returns-the-conte) – agf

Respuesta

5

Para ejecutar un programa externo y obtener su salida, utilice subprocess.check_output en Python 2.7+. El ejemplo de los documentos:

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

check_call sólo devuelve el código de retorno del programa, no el de salida.

Cuestiones relacionadas