3 Stimmen

Wie kann man die Ausgabe des Python-Interpreters umleiten und in einer Zeichenkette in einem C++-Programm abfangen?

Ich verwende die Python C++ API, um Python-Befehle aus einem C++-Programm auszuführen. Ich möchte alle Python-Ausgaben in einer Zeichenkette abfangen. Ich habe es mit der folgenden Umleitung geschafft, die Python-Ausgaben stdout und stderr abzufangen:

#python script , redirect_python_stdout_stderr.py
class CatchOutput:
    def __init__(self):
        self.value = ''
    def write(self, txt):
        self.value += txt
catchOutput = CatchOutput()
sys.stdout = catchOutput
sys.stderr = catchOutput

#C++ code
PyObject *pModule = PyImport_AddModule("__main__"); 
PyRun_SimpleString("execfile('redirect_python_stdout_stderr.py')"); 

PyObject *catcher = PyObject_GetAttrString(pModule,"catchOutput");

PyObject *output = PyObject_GetAttrString(catcher,"value");
char* pythonOutput = PyString_AsString(output);

Aber ich weiß nicht, was zu tun ist, um auch Python Interpreter Ausgabe .... zu fangen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X