2016-04-09 12 views
1

in meinem Django Python-Skript ich meine .cpp-Programm ausführen. Ich möchte meine Standardausgabe (cout) in C++ durch Subprozess in Python erfassen. In C++ habe ich versucht, einen Stream zu erstellen, der alle meine Couts puffert und in main() zurückgibt, aber der einzige Wert, den ich in der Hauptfunktion zurückgeben kann, ist Integer. Also meine Frage ist: Gibt es eine andere Möglichkeit, C++ Couts durch Python zu erfassen, um auf andere Weise zu bewerten? Danke im Voraus!Capture Cout von C++ durch Subprozess in meinem Pythonscript

ich versucht, mit popen von:

command = 'g++ -std=c++0x mutualcepepe.cpp -D "bomba = ' + str(strT) + '"' 
process = subprocess.Popen(command, stdout=subprocess.PIPE, shell=True) 
output = process.communicate() 
print output 

Andere Möglichkeit, die ich vorher verwendet wurde Linie unten aufzurufen, die mich Ausgabedatei enthält couts von C++ gibt.

os.system('g++ -std=c++0x mutualcepepe.cpp -D "bomba = ' + str(strT) + '" -o mutualout') 
+0

Welche Version von Python führen Sie – Ben

+0

Meine Version ist 2.7.6 – theCember

Antwort

1

In Python3, der einfachste Weg, stdout von einem Teilprozess zu greifen ist zu verwenden subprocess.getoutput:

import subprocess 
output = subprocess.getoutput('ls ./my_folder') 
print(output) 

Diese Methode in Python3.5 ersetzt wurde, und der empfohlene Weg ist jetzt:

result = subprocess.run(['ls', './my_folder'], stdout=subprocess.PIPE) 
print(result) 
print(result.stdout) 

Sie können auch die stdout in eine Zeichenfolge umwandeln:

result_string = result.stdout.decode('utf-8')