我的弃用警告消息在函数中。我想打印出调用函数的模块名称和行号,以便我可以轻松找到它们。以open()
为例:
/path/to/file/group.py:180: DeprecationWarning: 'U' mode is deprecated
with open(tmpName, 'rU') as csvfile
然而,我自己的警告打印如下:
/path/to/file/models.py:735: DeprecationWarning: Deprecated. Use course_id instead!
warnings.warn("Deprecated. Use course_id instead!", DeprecationWarning)
models.py
的第735行是warnings.warn()
电话所在的位置。有没有办法让警告输出父母来电者的姓名和行号?感谢。
答案 0 :(得分:1)
您可以使用stacklevel
参数控制要应用警告的呼叫者。
例如,以下代码:
import warnings
def hello(s):
if isinstance(s, int):
deprecation('Use of integers is deprecated.')
else:
print(s)
def deprecation(msg):
warnings.warn(msg, DeprecationWarning, stacklevel=3)
hello(1)
将发出以下警告:
warning_test.py:12: DeprecationWarning: Use of integers is deprecated.
hello(1)