python如何抑制系统警告而保留自定义警告
1.warnings.filterwarnings()简介
参考https://blog.csdn.net/tefuirnever/article/details/94122670
import warnings
warnings.filterwarnings(action, message=”, category=Warning, module=”, lineno=0, append=False)
过滤警告,在 警告过滤器规则 列表中插入一个条目。默认情况下,条目插入在前面;如果 append 为真,则在末尾插入。它检查参数的类型,编译 message 和 module 的正则表达式,并将它们作为警告过滤器列表中的元组插入。如果多个地方都匹配特定的警告,那么更靠近列表前面的条目会覆盖列表中后面的条目,省略的参数默认为匹配一切的值。
action 是以下表格左侧的值: 值处理方式“error”将匹配警告转换为异常“ignore”忽略匹配的警告“always”始终输出匹配的警告“default”对于同样的警告只输出第一次出现的警告“module”在一个模块中只输出第一次出现的警告“once”输出第一次出现的警告,而不考虑它们的位置message 是包含正则表达式的字符串,警告消息的开始必须匹配,不区分大小写category 是一个警告类型(必须是 Warning 的子类)module 是包含模块名称的正则表达式字符串,区分大小写lineno 是一个整数,警告发生的行号,为 0 则匹配所有行号 2.warnings.filterwarnings()使用
warnings.filterwarnings(action=“ignore”) 若直接使用该语句则会屏蔽用户自定义警告
因此可用该语句来忽略指定警告 warnings.filterwarnings(action=“ignore”,category=Warning的子类)
若需要忽略的警告较多,而需要保留的警告较少,则可先设置忽略全部警告,再设置需输出的警告,若我们只需要保留用户警告则:
warnings.filterwarnings(action=’ignore’)warnings.filterwarnings(action=’always’, category=UserWarning)
)