Python 警告控制

4 投票
1 回答
2068 浏览
提问于 2025-04-15 14:16

我想要在出现某种警告时,把它当成错误来处理,但只想在第一次出现的时候这样做。请问该怎么实现呢?

我看过这个链接,但是我不知道怎么把这两种行为结合起来。

1 个回答

7

在看warnings.py的代码时,你会发现一个警告只能设置一个过滤动作,而且你不能轻易地定义自己的动作,比如说“只抛出一次”。

不过,如果你想把一个警告当作异常来处理,但只想处理一次,这就意味着你在捕获这个异常。那为什么不在你的异常处理部分加一行代码,让这个特定的警告设置为“忽略”呢?

#!/usr/bin/python

import warnings

warnings.filterwarnings('error','Test')
for i in range(2):
  try:
    warnings.warn('Test');
  except UserWarning, e:
    print "Error caught"
    warnings.filterwarnings('ignore','Test')

撰写回答