如果我这样做
open("/snafu/fnord")
在Python中(文件不存在),我得到一个回溯和消息
^{pr2}$我想用Python的capi(即嵌入在C程序中的Python解释器)得到上面的字符串。我需要它作为一个字符串,而不是输出到控制台。在
使用PyErr_Fetch()
我可以获得异常的类型对象和值。对于上面的示例,值是一个元组:
(2, 'No such file or directory', '/snafu/fnord')
从我从PyErr_Fetch()
得到的信息到Python解释器显示的字符串,有没有一种简单的方法?(不需要自己为每个异常类型构造这样的字符串。)
我认为Python异常是通过在异常实例上运行“str()”来打印的,它将返回您感兴趣的格式化字符串。您可以通过调用下面描述的^{} 方法从C获取:
https://docs.python.org/c-api/object.html
祝你好运!在
更新:我有点困惑,为什么
PyErr_Fetch()
返回给您的第二个元素是一个字符串。我的猜测是您正在接收一个“非规范化异常”,需要调用PyErr_NormalizeException()
将该元组转换为“真正的”异常,该异常可以像您希望的那样将其自身格式化为字符串。在相关问题 更多 >
编程相关推荐