python捕獲警告的三種方法
1. 警告不是異常
你是不是經(jīng)常在使用一些系統(tǒng)庫(kù)或者第三方模塊的時(shí)候,會(huì)出現(xiàn)一些既不是異常也不是錯(cuò)誤的警告信息?
這些警告信息,有時(shí)候非常多,對(duì)于新手容易造成一些誤判,以為是程序出錯(cuò)了。
實(shí)則不然,異常和錯(cuò)誤,都是程序出現(xiàn)了一些問(wèn)題,但是警告不同,他的緊急程度非常之低,以致于大多數(shù)的警告都是可以直接忽略的。
如果不想顯示這些告警信息,可以直接加上參數(shù) -W ignore 參數(shù),就不會(huì)再顯示了。
2. 警告能捕獲嗎
能捕獲的只有錯(cuò)誤異常,但是通過(guò)一系列的操作后,你可以將這些警告轉(zhuǎn)化為異常。
這樣一來(lái),你就可以像異常一樣去捕獲他們了。
在不進(jìn)行任何設(shè)置的情況下,警告會(huì)直接打印在終端上。
3. 捕獲警告方法一
在 warnings 中有一系列的過(guò)濾器。
當(dāng)你指定為 error 的時(shí)候,就會(huì)將匹配警告轉(zhuǎn)換為異常。
之后你就可以通過(guò)異常的方式去捕獲警告了。
import warnings warnings.filterwarnings('error') try: warnings.warn("deprecated", DeprecationWarning) except Warning as e: print(e)
運(yùn)行后,效果如下
4. 捕獲警告方法二
如果你不想對(duì)在代碼中去配置將警告轉(zhuǎn)成異常。
import warnings try: warnings.warn("deprecated", DeprecationWarning) except Warning as e: print(e)
可以在執(zhí)行的時(shí)候,只要加上一個(gè)參數(shù) -W error
,就可以實(shí)現(xiàn)一樣的效果
$ python3 -W error demo.py deprecated
5. 捕獲警告方法三
除了上面的方法之外 ,warnings 還自帶了個(gè)捕獲警告的上下文管理器。
當(dāng)你加上 record=True 它會(huì)返回一個(gè)列表,列表里存放的是所有捕獲到的警告,我將它賦值為 w,然后就可以將它打印出來(lái)了。
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)
運(yùn)行后,效果如下
以上就是python捕獲警告的三種方法的詳細(xì)內(nèi)容,更多關(guān)于python 捕獲警告的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
python自動(dòng)生成model文件過(guò)程詳解
這篇文章主要介紹了python自動(dòng)生成model文件過(guò)程詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值2019-11-11Python Web編程之WSGI協(xié)議簡(jiǎn)介
這篇文章主要介紹了Python Web編程之WSGI協(xié)議,簡(jiǎn)單說(shuō)明了WSGI的概念、功能并結(jié)合實(shí)例形式分析了Gunicorn和uWSGI相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2018-07-07python數(shù)據(jù)結(jié)構(gòu)之圖的實(shí)現(xiàn)方法
這篇文章主要介紹了python數(shù)據(jù)結(jié)構(gòu)之圖的實(shí)現(xiàn)方法,實(shí)例分析了Python圖的表示方法與常用尋路算法的實(shí)現(xiàn)技巧,需要的朋友可以參考下2015-07-07python 實(shí)現(xiàn)PIL模塊在圖片畫線寫字
這篇文章主要介紹了python 實(shí)現(xiàn)PIL模塊在圖片畫線寫字,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-05-05pyspark創(chuàng)建DataFrame的幾種方法
為了便于操作,使用pyspark時(shí)我們通常將數(shù)據(jù)轉(zhuǎn)為DataFrame的形式來(lái)完成清洗和分析動(dòng)作。那么你知道pyspark創(chuàng)建DataFrame有幾種方法嗎,下面就一起來(lái)了解一下2021-05-05python實(shí)現(xiàn)計(jì)算器簡(jiǎn)易版
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)計(jì)算器簡(jiǎn)易版,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-12-12