Python 怎麼捕獲警告?(注意 不是捕獲異常)

2021-10-21 23:58:18 字數 1687 閱讀 8276

你是不是經常在使用一些系統庫或者第三方模組的時候,會出現一些既不是異常也不是錯誤的警告資訊?

這些警告資訊,有時候非常多,對於新手容易造成一些誤判,以為是程式出錯了。

實則不然,異常和錯誤,都是程式出現了一些問題,但是警告不同,他的緊急程度非常之低,以致於大多數的警告都是可以直接忽略的。

如果不想顯示這些告警資訊,可以直接加上引數 -w ignore 引數,就不會再顯示了。

能捕獲的只有錯誤異常,但是通過一系列的操作後,你可以將這些警告轉化為異常。

這樣一來,你就可以像異常一樣去捕獲他們了。

在不進行任何設定的情況下,警告會直接列印在終端上。

在 warnings 中有一系列的過濾器。

當你指定為 error 的時候,就會將匹配警告轉換為異常。

之後你就可以通過異常的方式去捕獲警告了。

import warnings

warnings.filterwarnings('error')    

try:

warnings.warn("deprecated", deprecationwarning)

except warning as e:

print(e)

執行後,效果如下

如果你不想對在**中去配置將警告轉成異常。

import warnings

try:

warnings.warn("deprecated", deprecationwarning)

except warning as e:

print(e)

可以在執行的時候,只要加上乙個引數 -w error ,就可以實現一樣的效果

$ python3 -w error demo.py

deprecated

除了上面的方法之外 ,warnings 還自帶了個捕獲警告的上下文管理器。

當你加上 record=true 它會返回乙個列表,列表裡存放的是所有捕獲到的警告,我將它賦值為 w,然後就可以將它列印出來了。

import warnings

def do_warning():

warnings.warn("deprecated", deprecationwarning)

with warnings.catch_warnings(record=true) as w:

do_warning()

if len(w) >0:

print(w[0].message)

執行後,效果如下

python異常捕獲 如何捕獲Python中的異常

python 提供了try except語句捕獲並處理異常,該異常處理語句的基本語法結構如下 try 可能產生異常的 塊 except error1,error2,as e 處理異常的 塊1 except error3,error4,as e 處理異常的 塊2該格式中,括起來的部分可以使用,也可以省...

python 忽略警告

初學python,執行示例 一直列印出警告資訊,很是討厭,所以查詢了下忽略python警告資訊的方法 示例 python w ignore python 檔名.py 介紹了忽略警告資訊,那如何主動捕捉警告資訊呢?如下 這裡用到warnings模組,看如下 import warnings def fx...

python基礎 警告

出現了一些需要讓使用者知道的問題,但又不想停止程式,這時候我們可以使用警告 首先匯入警告模組 in 1 import warnings 在需要的地方,我們使用warnings中的warn函式 warn msg,warningtype userwarning in 2 defmonth warning...