我在验证器中发出了很多警告,我想抑制stdout中的所有内容,除了提供的消息warnings.warn().
即,现在我看到了这个:
./file.py:123: UserWarning: My looong warning message
some Python code
Run Code Online (Sandbox Code Playgroud)
我想看到这个:
My looong warning message
Run Code Online (Sandbox Code Playgroud)
编辑2:覆盖warnings.showwarning()结果工作:
def _warning(
message,
category = UserWarning,
filename = '',
lineno = -1):
print(message)
...
warnings.showwarning = _warning
warnings.warn('foo')
Run Code Online (Sandbox Code Playgroud) 我的最小例子是
#!/usr/bin/python3
import warnings
warnings.warn('Run Forest run!', stacklevel=2)
warnings.warn('Run Forest run!')
Run Code Online (Sandbox Code Playgroud)
它会输出
sys:1: UserWarning: Run Forest run!
./file.py:6: UserWarning: Run Forest run!
warnings.warn('Run Forest run!')
Run Code Online (Sandbox Code Playgroud)
第一行给了我一些信息.第二行是完美的,给我源文件和行号...但我想摆脱多余的第三行.那可能吗?