Python編程中如何捕獲警告ps不是捕獲異常
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ò)濾器。
值 | 處置 |
---|---|
default | 為發(fā)出警告的每個(gè)位置(模塊+行號(hào))打印第一個(gè)匹配警告 |
error | 將匹配警告轉(zhuǎn)換為異常 |
ignore | 從不打印匹配的警告 |
always | 總是打印匹配的警告 |
module | 為發(fā)出警告的每個(gè)模塊打印第一次匹配警告(無(wú)論行號(hào)如何) |
once | 無(wú)論位置如何,僅打印第一次出現(xiàn)的匹配警告 |
當(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)行后,效果如下
文章最后給大家介紹三個(gè)我自己寫(xiě)的在線(xiàn)文檔:
第一個(gè)文檔:PyCharm 中文指南 1.0 文檔
花了兩個(gè)多月的時(shí)間,整理了 100 個(gè) PyCharm 的使用技巧,為了讓新手能夠直接上手,我花了很多的時(shí)間錄制了上百?gòu)?GIF 動(dòng)圖,有興趣的前往在線(xiàn)文檔閱讀。
第二個(gè)文檔:PyCharm 黑魔法指南 1.0 文檔
系統(tǒng)收錄各種 Python 冷門(mén)知識(shí),Python Shell 的多樣玩法,令人瘋狂的 Python 炫技操作,Python 的超詳細(xì)進(jìn)階知識(shí)解讀,非常實(shí)用的 Python 開(kāi)發(fā)技巧等。
第三個(gè)文檔:Python 中文指南 1.0 文檔
花了三個(gè)月時(shí)間寫(xiě)的一本 適合零基礎(chǔ)入門(mén) Python 的全中文教程,搭配大量的代碼案例,讓初學(xué)者對(duì) 代碼的運(yùn)作效果有一個(gè)直觀感受,教程既有深度又有廣度,每篇文章都會(huì)標(biāo)內(nèi)容的難度,是基礎(chǔ)還是進(jìn)階的,可供讀者進(jìn)行選擇,是一本難得的 Python 中文電子教程。
以上就是Python捕獲警告ps不是捕獲異常的詳細(xì)內(nèi)容,更多關(guān)于Python捕獲警告的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Python實(shí)現(xiàn)獲取彈幕的兩種方式分享
彈幕可以給觀眾一種“實(shí)時(shí)互動(dòng)”的錯(cuò)覺(jué),在相同時(shí)刻發(fā)送的彈幕基本上也具有相同的主題,在參與評(píng)論時(shí)就會(huì)有與其他觀眾同時(shí)評(píng)論的錯(cuò)覺(jué)。本文為大家總結(jié)了兩個(gè)Python獲取彈幕的方法,希望對(duì)大家有所幫助2023-03-03Python使用Pycrypto庫(kù)進(jìn)行RSA加密的方法詳解
RSA加密算法是一種強(qiáng)大的公鑰加密算法,安全性很高,這里我們來(lái)看一下Python使用Pycrypto庫(kù)進(jìn)行RSA加密的方法詳解,需要的朋友可以參考下2016-06-06淺談keras.callbacks設(shè)置模型保存策略
這篇文章主要介紹了淺談keras.callbacks設(shè)置模型保存策略,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-06-06pytorch安裝及環(huán)境配置的完整過(guò)程
這篇文章主要介紹了pytorch安裝及環(huán)境配置的完整過(guò)程,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-03-03python爬蟲(chóng)多次請(qǐng)求超時(shí)的幾種重試方法(6種)
這篇文章主要介紹了python爬蟲(chóng)多次請(qǐng)求超時(shí)的幾種重試方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12python利用K-Means算法實(shí)現(xiàn)對(duì)數(shù)據(jù)的聚類(lèi)案例詳解
這篇文章主要介紹了python利用K-Means算法實(shí)現(xiàn)對(duì)數(shù)據(jù)的聚類(lèi),本文通過(guò)案例講解的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-04-04Python的lambda匿名函數(shù)的簡(jiǎn)單介紹
Python的lambda匿名函數(shù)的簡(jiǎn)單介紹,需要的朋友可以參考一下2013-04-04