gpt4 book ai didi

c++ - 如何重定向 python 解释器输出并将其捕获在 C++ 程序中的字符串中?

转载 作者:太空狗 更新时间:2023-10-29 21:07:50 29 4
gpt4 key购买 nike

我正在使用 python C++ API 从 C++ 程序运行 python 命令。我想将所有 python 输出捕获到一个字符串中,我通过以下重定向进行管理,以捕获 pythons stdout 和 stderr 输出:

#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);

但我不知道如何捕捉 python 解释器的输出....

最佳答案

Python 解释器将在您的 C++ 进程中运行,因此它的所有输出都将转到 C++ 程序本身的标准错误和标准输出。 this answer 中描述了如何捕获此输出.请注意,使用这种方法,您将不再需要在 Python 脚本中捕获输出——只需将其转到标准输出并在 C++ 中一次捕获所有内容即可。

关于c++ - 如何重定向 python 解释器输出并将其捕获在 C++ 程序中的字符串中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4347983/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com