Python 如何从Py_CompileString打印错误(包括语法)?
不生成任何文本。我知道有一个Python 如何从Py_CompileString打印错误(包括语法)?,python,visual-studio-2010,Python,Visual Studio 2010,不生成任何文本。我知道有一个sys.stderror,但是除了创建回调和自定义函数之外,没有更简单的处理方法了吗?最终发现了这一点: Py_Initialize(); PyObject* code = Py_CompileString(text, "(text)", Py_single_input); if (!code) { PyErr_Print(); return; } 完整性,然后是Py_DECREF(utf);Py_DECREF(ptype);Py_XDECREF(p
sys.stderror
,但是除了创建回调和自定义函数之外,没有更简单的处理方法了吗?最终发现了这一点:
Py_Initialize();
PyObject* code = Py_CompileString(text, "(text)", Py_single_input);
if (!code) {
PyErr_Print();
return;
}
完整性,然后是
Py_DECREF(utf);Py_DECREF(ptype);Py_XDECREF(pvalue);Py_XDECREF(ptraceback)代码>注意:pvalue
和ptraceback
可能是NULL
,因此使用Py\uxdecref
,并且pvalue
到char*
的转换应使用if(pvalue!=NULL){…}
进行保护。
PyObject *ptype, *pvalue, *ptraceback;
PyErr_Fetch(&ptype, &pvalue, &ptraceback);
PyObject* utf = PyUnicode_AsUTF8String(pvalue);
Assert(utf);
char* buffer = PyBytes_AsString(utf);