仅打印警告信息
我在一个验证器里发出了很多警告,我想要屏蔽掉标准输出中的所有内容,只保留通过 warnings.warn()
传递的消息。
也就是说,现在我看到的是:
./file.py:123: UserWarning: My looong warning message
some Python code
我想看到的是:
My looong warning message
编辑 2:重写 warnings.showwarning()
结果证明是有效的:
def _warning(
message,
category = UserWarning,
filename = '',
lineno = -1):
print(message)
...
warnings.showwarning = _warning
warnings.warn('foo')
5 个回答
13
使用日志模块,不要用warnings
。
48
总是可以用猴子补丁来解决问题:
import warnings
def custom_formatwarning(msg, *args, **kwargs):
# ignore everything except the message
return str(msg) + '\n'
warnings.formatwarning = custom_formatwarning
warnings.warn("achtung")
21
用你自己的自定义函数来替换 warnings.showwarning()
这个函数。