让 Python 的 `warnings.warn()` 不提及它自己 [英] Make Python's `warnings.warn()` not mention itself

查看:29
本文介绍了让 Python 的 `warnings.warn()` 不提及它自己的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我最小的例子是

#!/usr/bin/python3

import warnings

warnings.warn('Run Forest run!', stacklevel=2)
warnings.warn('Run Forest run!')

它会输出

sys:1: UserWarning: Run Forest run!
./file.py:6: UserWarning: Run Forest run!
  warnings.warn('Run Forest run!')

第一行给我的信息很少.第二行很完美,给了我源文件和行号……但我想去掉多余的第三行.这可能吗?

The first line gives me to little info. The second line is perfect, giving me source file and line number ... but I'd like to get rid of the redundant third line. Is that possible?

推荐答案

事实证明,可以让 warnings.warn() 收集所有信息并调整信息的打印方式:

Turns out it is possible to let warnings.warn() collect all the info and just costumize the way the info is printed:

#!/usr/bin/python3

import warnings

def warning_on_one_line(message, category, filename, lineno, file=None, line=None):
    return '%s:%s: %s: %s\n' % (filename, lineno, category.__name__, message)

warnings.formatwarning = warning_on_one_line

warnings.warn('Run Forest run!', stacklevel=2)
warnings.warn('Run Forest run!')

输出:

sys:1: UserWarning: Run Forest run!
./file.py:15: UserWarning: Run Forest run!

来源: 本周 Python 模块

这篇关于让 Python 的 `warnings.warn()` 不提及它自己的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆