无码av一区二区三区无码,在线观看老湿视频福利,日韩经典三级片,成 人色 网 站 欧美大片在线观看

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

python 警告捕獲(RuntimeWarning Catch)

2023-06-05 22:47 作者:游戲王luffy  | 我要投稿

1.背景

python腳本中,我們經(jīng)常會使用try-except異常處理機制,來捕獲和處理程序執(zhí)行過程中可能出現(xiàn)的錯誤和異常情況。但是,我們也會在執(zhí)行python腳本的過程遇到RuntimeWarning的錯誤,例如,使用pandas讀取表格中的內(nèi)容,并轉(zhuǎn)換到基本python類型,如果表格內(nèi)容為nan,會提示以下警告。


此外,numpy中出現(xiàn)/0時,會發(fā)現(xiàn)應(yīng)該捕獲除0異常的地方,卻沒有拋出異常(numpy自身機制處理,不拋出異常),程序反而”正?!皥?zhí)行下去。

如以下程序:

(除0結(jié)果是nan,沒有拋出異常,只提示了警告)


(將nan轉(zhuǎn)換為int,顯示警告,但不影響程序執(zhí)行)

因此,有時候我們也需要捕獲這些警告,幫助我們查找問題或者避免意想不到的問題。

2.處理方法

(1)if判斷

像在numpy中,可以使用np.isnan判斷是否為空等

(2)numpy.seterr

通過seterr可以設(shè)置各種數(shù)字異常時的處理行為,

數(shù)字異常包括:

●?all:所有數(shù)字異常

●?under:浮點數(shù)下溢

●?invalid:無效,無效生成nan時

●?divide:除以0

●?over:浮點溢出

異常處理行為如下:

●?'ignore':發(fā)生異常時不采取任何措施。

●?'warn':打印?RuntimeWarning?(通過Python?warnings模塊)。

●?'raise':引發(fā)?FloatingPointError?。

●?'call':調(diào)用使用?seterrcall?函數(shù)指定的函數(shù)。

●?'print':直接打印警告stdout。

●?'log':在?seterrcall?指定的Log對象中記錄錯誤。

因此,使用seterr時,可以設(shè)置為”raise“,并通過try-excep來捕獲異常處理。如以下代碼

(3)warnings模塊

使用warnings模塊+try-except可以捕獲python中的所有警告,并進行異常處理。

warnings使用filterwarnings過濾器來處理警告:

注意的是,seterr僅適用numpy,而warnings不限制模塊。如下代碼所示(此時不用設(shè)置seterr,因為默認(rèn)處理方法就是warning)

3.? 參考資料

https://blog.csdn.net/TeFuirnever/article/details/94122670

https://www.jianshu.com/p/907107c7173d

https://stackoverflow.com/questions/15933741/how-do-i-catch-a-numpy-warning-like-its-an-exception-not-just-for-testing


python 警告捕獲(RuntimeWarning Catch)的評論 (共 條)

分享到微博請遵守國家法律
陆丰市| 鄂伦春自治旗| 布尔津县| 壶关县| 和林格尔县| 逊克县| 盐津县| 龙井市| 元氏县| 金昌市| 田东县| 曲阜市| 晋州市| 陕西省| 确山县| 关岭| 石城县| 永靖县| 桑植县| 永州市| 闽侯县| 青铜峡市| 同江市| 滕州市| 永安市| 浮山县| 丹东市| 萨嘎县| 紫云| 内乡县| 揭西县| 吉首市| 绥芬河市| 奉新县| 沛县| 台中市| 周至县| 九寨沟县| 东至县| 祥云县| 米林县|