pythoncapi:如何获取异常的字符串表示?

2024-06-16 12:37:41 发布

您现在位置:Python中文网/ 问答频道 /正文

如果我这样做

 open("/snafu/fnord")

在Python中(文件不存在),我得到一个回溯和消息

^{pr2}$

我想用Python的capi(即嵌入在C程序中的Python解释器)得到上面的字符串。我需要它作为一个字符串,而不是输出到控制台。在

使用PyErr_Fetch()我可以获得异常的类型对象和值。对于上面的示例,值是一个元组:

 (2, 'No such file or directory', '/snafu/fnord')

从我从PyErr_Fetch()得到的信息到Python解释器显示的字符串,有没有一种简单的方法?(不需要自己为每个异常类型构造这样的字符串。)


Tags: 文件对象字符串程序消息示例类型fetch
1条回答
网友
1楼 · 发布于 2024-06-16 12:37:41

我认为Python异常是通过在异常实例上运行“str()”来打印的,它将返回您感兴趣的格式化字符串。您可以通过调用下面描述的^{}方法从C获取:

https://docs.python.org/c-api/object.html

祝你好运!在

更新:我有点困惑,为什么PyErr_Fetch()返回给您的第二个元素是一个字符串。我的猜测是您正在接收一个“非规范化异常”,需要调用PyErr_NormalizeException()将该元组转换为“真正的”异常,该异常可以像您希望的那样将其自身格式化为字符串。在

相关问题 更多 >