国产精品天干天干,亚洲毛片在线,日韩gay小鲜肉啪啪18禁,女同Gay自慰喷水

歡迎光臨散文網(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)的評論 (共 條)

分享到微博請遵守國家法律
彩票| 乐东| 绥德县| 调兵山市| 德庆县| 和政县| 乌兰察布市| 开封市| 长沙市| 雅江县| 宕昌县| 望都县| 赣榆县| 临夏市| 定南县| 德昌县| 广汉市| 嘉鱼县| 怀远县| 泸定县| 乡宁县| 石河子市| 工布江达县| 澄城县| 祥云县| 青川县| 五华县| 长春市| 乐业县| 泾阳县| 郸城县| 博野县| 临海市| 汝城县| 土默特右旗| 卓资县| 师宗县| 新密市| 白河县| 安丘市| 庆元县|