栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

获取警告的追溯

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

获取警告的追溯

通过分配给,您可以获得想要的东西

warnings.showwarning
。该警告模块文档本身建议您这样做,所以它不是你被诱惑的
源黑暗的一面 。:)

您可以通过分配给,将其替换为替代功能

warnings.showwarning

您可以定义一个新函数,该函数可以正常执行

warning.showwarning
操作,并且还可以打印堆栈。然后,将其放置而不是原始放置:

import tracebackimport warningsimport sysdef warn_with_traceback(message, category, filename, lineno, file=None, line=None):    log = file if hasattr(file,'write') else sys.stderr    traceback.print_stack(file=log)    log.write(warnings.formatwarning(message, category, filename, lineno, line))warnings.showwarning = warn_with_traceback

此后,每个警告将打印堆栈跟踪以及警告消息。但是请注意,如果由于警告不是第一个警告而被忽略,则不会发生任何事情,因此您仍然需要执行以下操作:

warnings.simplefilter("always")

您可以

numpy.seterr
通过
warning
模块的过滤器获得类似的控件

如果您想要的是python在每次触发警告时(不仅是第一次)都报告每个警告,则可以包含以下内容:

import warningswarnings.simplefilter("always")

您可以通过传递不同的字符串作为参数来获得其他行为。使用相同的功能,您还可以根据引发警告的模块,警告提供的消息,警告类,引起警告的代码行等为警告指定不同的行为…

您可以在模块文档中查看列表

例如,您可以设置所有警告以引发异常,但

DeprecationWarnings
应该完全忽略这些警告:

import warningswarnings.simplefilter("error")warnings.simplefilter("ignore", DeprecationWarning)

这样,您可以对引发为错误的每个警告进行完整的追溯(只有第一个警告,因为执行将停止…但是您可以一个个地解决它们,并创建一个过滤器以忽略那些您不想听到的警告大约…



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/617720.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号