【问题标题】:Python Warning controlPython 警告控制
【发布时间】:2009-09-11 18:31:45
【问题描述】:

我希望将某种警告作为错误引发,但只在第一次出现。该怎么做?

我阅读了http://docs.python.org/library/warnings.html,但我不知道如何将这两种行为结合起来。

【问题讨论】:

    标签: python warnings


    【解决方案1】:

    查看warnings.py 的代码,您不能为警告分配多个过滤器操作,也不能(轻松)定义自己的操作,例如“raise_once”。

    但是,如果您想将警告作为异常发出,但只发出一次,这意味着您正在捕获异常。为什么不在您的 except 子句中添加一行,对特定警告设置“忽略”操作?

    #!/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')
    

    【讨论】:

    • 有没有办法在几次类似的警告之后使警告静音?我的意思是在确切数量的相同警告之后。
    • L1ker,见docs.python.org/2/library/warnings.html#the-warnings-filter。你可以例如在发出警告之前在某处致电warnings.filterwarnings("once")。但是,按照您的要求,无法多次显示相同的警告,而是显示固定的次数。
    猜你喜欢
    • 1970-01-01
    • 2019-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-03
    • 2015-11-26
    • 2019-10-05
    • 2021-02-04
    相关资源
    最近更新 更多