python捕獲警告的三種方法
1. 警告不是異常
你是不是經常在使用一些系統庫或者第三方模塊的時候,會出現一些既不是異常也不是錯誤的警告信息?
這些警告信息,有時候非常多,對於新手容易造成一些誤判,以為是程序出錯瞭。
實則不然,異常和錯誤,都是程序出現瞭一些問題,但是警告不同,他的緊急程度非常之低,以致於大多數的警告都是可以直接忽略的。
如果不想顯示這些告警信息,可以直接加上參數 -W ignore 參數,就不會再顯示瞭。
2. 警告能捕獲嗎
能捕獲的隻有錯誤異常,但是通過一系列的操作後,你可以將這些警告轉化為異常。
這樣一來,你就可以像異常一樣去捕獲他們瞭。
在不進行任何設置的情況下,警告會直接打印在終端上。
3. 捕獲警告方法一
在 warnings 中有一系列的過濾器。
當你指定為 error 的時候,就會將匹配警告轉換為異常。
之後你就可以通過異常的方式去捕獲警告瞭。
import warnings warnings.filterwarnings('error') try: warnings.warn("deprecated", DeprecationWarning) except Warning as e: print(e)
運行後,效果如下
4. 捕獲警告方法二
如果你不想對在代碼中去配置將警告轉成異常。
import warnings try: warnings.warn("deprecated", DeprecationWarning) except Warning as e: print(e)
可以在執行的時候,隻要加上一個參數 -W error
,就可以實現一樣的效果
$ python3 -W error demo.py deprecated
5. 捕獲警告方法三
除瞭上面的方法之外 ,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 捕獲警告的資料請關註WalkonNet其它相關文章!
推薦閱讀:
- python 日志模塊logging的使用場景及示例
- Centos安裝python3與scapy模塊的問題及解決方法
- python打印日志方法的使用教程(logging模塊)
- Python中的異常類型及處理方式示例詳解
- SQL Server中實現錯誤處理