让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!')

第一行给我一点信息。第二行是完美的,为我提供了源文件和行号…但是我想摆脱多余的第三行。那可能吗?

回答:

事实证明,有可能让我们warnings.warn()收集所有信息,而只是汇总信息的打印方式:

#!/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()`不提及自己 的全部内容, 来源链接: utcz.com/qa/406460.html

回到顶部