2011-09-29 11 views
5

Voglio chiamare un programma (.exe), che è scritto in C++ e compilato, da Python. L'eseguibile prende come input due file e restituisce un punteggio.Chiama il programma esterno da python e ottieni l'output

Ho bisogno di farlo per più file. Quindi, vorrei scrivere un piccolo script in python che esegue il loop su più file, li passa all'eseguibile e recupera i valori.

Ora ho fatto la mia ricerca e so di SWIG e Boost :: Python potrebbe essere un'opzione ma stavo cercando di trovare se c'è un modo più semplice. Non ho bisogno di "estendere" il programma C++. Voglio semplicemente chiamarlo come farei da una riga di comando e ottenere il numero restituito.

+1

Prova questa domanda: http://stackoverflow.com/questions/2919783/python-calling-a-non-python-program-from-python – TorelTwiddler

+0

@TorelTwiddler che non è quello che vuole fare - quella risposta restituisce il codice di ritorno, non l'output del programma. – agf

+0

Il duplicato corretto è [Qual è un buon equivalente al subprocesso.check_call di python che restituisce il contenuto di stdout?] (Http://stackoverflow.com/questions/2924310/whats-a-good-equivalent-to-pythons-subprocess- check-call-che-torna-il-conte) – agf

risposta

5

Per eseguire un programma esterno e ottenere la sua uscita, utilizzare subprocess.check_output su Python 2.7+. L'esempio dalla documentazione:

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

check_call restituisce solo il codice di ritorno del programma, non è l'uscita.

Problemi correlati