gpt4 book ai didi

python - 重新检查 Traceback 中的值

转载 作者:太空狗 更新时间:2023-10-30 02:50:03 24 4
gpt4 key购买 nike

我正在尝试对回溯进行一些详细的重新检查并获取实际值来自未能返回更多(更好?)信息的对象回溯。

案例场景在我导入并执行的函数中,如下所示:

def foo():
a = True
b = False
assert a == b

然后像这样执行:

from foo import foo

def re_inspect():
try:
foo()
except Exception, e:
# re-inspect traceback and check `a` and `b`

AssertionError 被引发时,如果我尝试评估引发异常的行,我(当然)无法分辨什么是 ab 是(NameError 立即引发)因为我缺少代码的上下文。

请注意,我没有访问ab 的权限,因为上面的代码是导入然后执行的。由于 foo 不存在于当前 namespace 中,我的问题依赖于从 foo 上下文中获取正确的值。

什么是正确的方法来区分 ab 是什么,这样你就可以安全地说:“a 是 True,be 是 False “?

最佳答案

您可以使用检查模块:

try:
foo()
except AssertionError, e:
import inspect
previous_trace = inspect.trace()[1]
frame = previous_trace[0]
print 'value of a, b:', inspect.getargvalues(frame).locals

参见 http://docs.python.org/library/inspect.html#inspect.getargvalues

关于python - 重新检查 Traceback 中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5182147/

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