我知道也有类似的问题,但我解决这个问题的努力没有成功。我想重定向Python解释器I/O,但我只成功地重定向了stdout。我对stdin和stderr还有问题。基于Redirect Embedded Python IO to a console created with AllocConsole我做了以下工作:
PyObject* sys = PyImport_ImportModule("sys");
PyObject* pystdout = PyFile_FromString("CONOUT$", "wt");
if (-1 == PyObject_SetAttrString(sys, "stdout", pystdout)) {
/* raise errors and wail very loud */
}
PyObject* pystdin = PyFile_FromString("CONIN$", "rb");
if (-1 == PyObject_SetAttrString(sys, "stdin", pystdin)) {
/* raise errors and wail very loud */
}
//cout << "no error" << endl;
Py_DECREF(sys);
Py_DECREF(pystdout);
Py_DECREF(pystdin);
我有简单的脚本用于测试:
^{pr2}$当我的脚本被执行时,控制台上只显示第一次打印。第二个和第三个命令根本不显示。而不是输出,所以:
Hello
Take a guess: "my guess"
"my guess"
我只有
Hello
我很感激使用Python和API来解决它。 谢谢。在
我已经找到了解决方案,只做了一些改动,使用了Python3.x而不是2.x。现在,如果我们按照Python3.x标准稍微修改一下脚本,一切都会很好。在
相关问题 更多 >
编程相关推荐