【问题标题】:Python warning showing always instead of oncePython警告总是显示而不是一次
【发布时间】:2016-02-18 15:44:43
【问题描述】:

我正在尝试使用warnings.simplefilter 显示我的警告一次。我为DeprecationWarning 创建了一个子类。我尝试将simplefilter 与我的警告放在同一个模块中,并将包级别 init 放在尽可能高的位置,但它总是会在每次调用时显示警告。在 python 3.4 中测试。

我的警告:

class MyDeprecationWarning(DeprecationWarning):
    pass

我如何称呼 simplefilter:

warnings.simplefilter('once', MyDeprecationWarning)

我怎么称呼警告:

warnings.warn("Warning!", MyDeprecationWarning)

有什么问题?

【问题讨论】:

    标签: python warnings deprecated deprecation-warning


    【解决方案1】:

    如果您的程序多次运行或某些代码在单独的进程中运行,则您可能没有按正确的顺序发出命令。以下程序按预期工作。

    import warnings
    
    
    class MyDeprecationWarning(DeprecationWarning):
        pass
    
    
    def main():
        print('Program Starting')
        warnings.simplefilter('once', MyDeprecationWarning)
        for _ in range(100):
            warnings.warn('Warning!', MyDeprecationWarning)
        print('Program Finished')
    
    
    if __name__ == '__main__':
        main()
    

    【讨论】:

      猜你喜欢
      • 2016-01-29
      • 1970-01-01
      • 2021-11-24
      • 2020-10-27
      • 1970-01-01
      • 2013-10-26
      • 2014-05-02
      • 1970-01-01
      • 2011-06-22
      相关资源
      最近更新 更多