使用此代码:
#! /usr/bin/env python
# -*- coding: utf-8 -*-
import sys
import warnings
if sys.version_info[0] >= 3:
...
else:
warnings.warn("Python 3.x is required!", RuntimeWarning)
我得到的其他输出是:
Warning (from warnings module):
File "C:\Users\..., line 10
warnings.warn("Python 3.x is required!", RuntimeWarning)
RuntimeWarning: Python 3.x is required!
有没有办法摆脱输出的前3行,只显示" RuntimeWarning:需要Python 3.x!" ?
答案 0 :(得分:4)
来自https://pymotw.com/2/warnings/#stack-level-in-warnings
警告中的堆栈级别
您会注意到默认情况下警告消息包含来源 生成它的行,如果可用的话。这并不是那么有用 但是,请参阅带有实际警告消息的代码行。代替, 你可以告诉warn()它必须走多远才能找到这条线 被调用的函数包含警告。用户的方式 不推荐使用的函数查看调用函数的位置,而不是 实现该功能。
# warnings_warn_stacklevel.py
import warnings
def old_function():
warnings.warn(
'old_function() is deprecated, use new_function() instead',
stacklevel=2)
def caller_of_old_function():
old_function()
caller_of_old_function()
请注意,在此示例中,warn()需要上升到堆栈2级别,一个用于自身,一个用于old_function()。
$ python warnings_warn_stacklevel.py
warnings_warn_stacklevel.py:18: UserWarning: old_function() is deprecated, use new_function() instead old_function()