arn*_*ney 6 python warnings python-3.x
我的最小例子是
#!/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)
第一行给了我一些信息.第二行是完美的,给我源文件和行号...但我想摆脱多余的第三行.那可能吗?
您得到“冗余”行的原因是因为如果您不提供参数,则stacklevel默认stacklevel值为 1,这基本上是告诉用户警告源自的确切代码行,即您的警告函数调用warnings.warn('Run Forest Run!')。
如果您对其功能不满意,可以使用该warnings.warn_explicit()功能对其进行自定义。
https://docs.python.org/3.1/library/warnings.html#available-functions
事实证明,可以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!')
Run Code Online (Sandbox Code Playgroud)
输出:
sys:1: UserWarning: Run Forest run!
./file.py:15: UserWarning: Run Forest run!
Run Code Online (Sandbox Code Playgroud)
资料来源: 本周的Python模块
| 归档时间: |
|
| 查看次数: |
931 次 |
| 最近记录: |