吴忠躺衫网络科技有限公司

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Python 怎么捕獲警告(Warning)?

科技綠洲 ? 來(lái)源:Python實(shí)用寶典 ? 作者:Python實(shí)用寶典 ? 2023-11-01 10:57 ? 次閱讀

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)行后,效果如下

圖片

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 模塊
    +關(guān)注

    關(guān)注

    7

    文章

    2735

    瀏覽量

    47755
  • 終端
    +關(guān)注

    關(guān)注

    1

    文章

    1156

    瀏覽量

    30006
  • python
    +關(guān)注

    關(guān)注

    56

    文章

    4807

    瀏覽量

    85040
  • Warning
    +關(guān)注

    關(guān)注

    0

    文章

    4

    瀏覽量

    7061
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    Eclips編譯警告,每次都有這個(gè)warning,為什么?

    Eclips編譯警告,每次都有這個(gè)warning,看起來(lái)不順眼, 不知道哪里有問(wèn)題,編譯結(jié)果是沒(méi)問(wèn)題的。 報(bào)錯(cuò)的中間信息如下,紅色已標(biāo)注
    發(fā)表于 06-21 06:25

    fpga 警告解決辦法 Warning (10631)

    本帖最后由 eehome 于 2013-1-5 10:08 編輯 Warning (10631): VHDL Process Statement warning at kongzhi.vhd
    發(fā)表于 12-19 23:19

    從編譯警告信息(Warning)中尋找原因

    從編譯警告信息(Warning)中尋找原因在跟著韋老師視頻學(xué)習(xí)的時(shí)候,經(jīng)常發(fā)現(xiàn),我就是按照韋老師的視頻邊看邊敲的代碼,到最后為什么他都能實(shí)現(xiàn)結(jié)果,而我的程序頻繁報(bào)錯(cuò),這些問(wèn)題困擾我們這些新手很長(zhǎng)
    發(fā)表于 05-21 10:54

    quartus Warning問(wèn)題(等待解答)

    因?yàn)榉抡娴臅r(shí)候一直找不到這個(gè)address,所以找到了這個(gè)警告,想問(wèn)下大神們這是怎么回事?Warning (10631): VHDL Process Statement warning
    發(fā)表于 08-10 15:04

    CCS編譯出現(xiàn)警告warning: creating output section csmpasswds without SECTIONS specification

    ccs3.3中編譯出現(xiàn)如下警告:>> warning: creating output section csmpasswds without SECTIONS
    發(fā)表于 09-05 11:08

    封裝時(shí)出現(xiàn)警告Warning:Errors occurred during compilation of the project

    封裝的時(shí)候出現(xiàn)的警告Warning:Errors occurred during compilation of the project,怎么解決?
    發(fā)表于 04-15 07:34

    python捕獲警告的3種方法

    ;python3 -W error demo.pydeprecated5. 捕獲警告方法三除了上面的方法之外 ,warnings 還自帶了個(gè)捕獲警告
    發(fā)表于 03-31 16:12

    Eclips編譯警告,每次都有這個(gè)warning怎么去除?

    Eclips編譯警告,每次都有這個(gè)warning,看起來(lái)不順眼,不知道哪里有問(wèn)題,編譯結(jié)果是沒(méi)問(wèn)題的。報(bào)錯(cuò)的中間信息如下,紅色已標(biāo)注
    發(fā)表于 02-20 07:40

    怎樣解決MDK中的警告Warning: L6305W: Image does not have an entry p...?

    怎樣解決MDK中的警告Warning: L6305W: Image does not have an entry point. (Not specified or not set due
    發(fā)表于 06-20 07:47

    "51單片機(jī)編譯警告筆記一(WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS)"

    *** WARNING L16: UNCALLED SEGMENT IGNORED FOR OVERLAY PROCESS SEGMENT: ?PR?_DELAY_N10US?DELAY
    發(fā)表于 11-18 13:36 ?12次下載
    "51單片機(jī)編譯<b class='flag-5'>警告</b>筆記一(<b class='flag-5'>WARNING</b> L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS)"

    "51單片機(jī)WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS"

    編譯程序時(shí)出現(xiàn)如下警告WARNING L16: UNCALLED SEGMENT IGNORED FOR OVERLAY PROCESS出現(xiàn)這種警告是由于定義的函數(shù)或者代碼段常量沒(méi)有使用造成
    發(fā)表于 11-18 13:51 ?18次下載
    "51單片機(jī)<b class='flag-5'>WARNING</b> L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS"

    keil C51出現(xiàn)的警告

    (MEASURE_PROGRAM)*** WARNING L2: REFERENCE MADE TO UNRESOLVED EXTERNALSYMBOL: ?C?LIMULMODULE: measure program.obj (MEASURE_PROGRAM)ADDRESS: 072BHkeil C51出現(xiàn)
    發(fā)表于 12-03 20:36 ?8次下載
    keil C51出現(xiàn)的<b class='flag-5'>警告</b>

    python如何捕獲異常和主動(dòng)拋出異常

    python如何主動(dòng)拋出異常和捕獲異常 1. 如何拋出異常? 異常的產(chǎn)生有兩種來(lái)源: 一種是程序自動(dòng)拋出,比如 1/0 會(huì)自動(dòng)拋出 ZeroDivisionError 一種是開(kāi)發(fā)者主動(dòng)拋出
    的頭像 發(fā)表于 03-04 17:09 ?9910次閱讀

    python怎么捕獲警告

    你是不是經(jīng)常在使用一些系統(tǒng)庫(kù)或者第三方模塊的時(shí)候,會(huì)出現(xiàn)一些既不是異常也不是錯(cuò)誤的警告信息?
    的頭像 發(fā)表于 03-31 16:12 ?1400次閱讀

    應(yīng)用筆記|巧用 STM32CubeIDE 之編譯警告

    關(guān)鍵字:STM32CubeIDE,warning,編譯警告 目錄預(yù)覽 1 前言 2 巧用 warning 3 小結(jié) 1. 前言 編譯警告對(duì)于工程師們來(lái)說(shuō),是再常見(jiàn)不過(guò)的東西了。 對(duì)于嚴(yán)
    的頭像 發(fā)表于 06-29 17:35 ?1511次閱讀
    應(yīng)用筆記|巧用 STM32CubeIDE 之編譯<b class='flag-5'>警告</b>
    澳门顶级赌场网址| 百家乐连锁| 网上百家乐官网有人赢过嘛 | 大发888方官| 百家乐官网园qq群| 百家乐官网现金网开户平台 | 易胜博娱乐| 缅甸百家乐赌博现场下载| 百家乐官网开线| 皇冠娱乐城| 威尼斯人娱乐城--老品牌值得您信赖| 24山家坐向| 百家乐官网视频多开器| 大发888娱乐场下载ypu rd| 澳门百家乐有没有假| 香港百家乐官网玩法| 大玩家娱乐| 东方太阳城三期琴湖湾| 百家乐官网长玩必输| bet365娱乐场| 玩百家乐技巧看| 百家乐大赢家客户端| 百家乐官网PK| 百家乐官网有哪几种| 博彩e族777| 时时博百家乐的玩法技巧和规则 | 永利百家乐游戏| 真人百家乐官网新开户送彩金| E世博网址| 威尼斯人娱乐城免费注册| 波音百家乐自动投注| 百家乐官网博娱乐赌百家乐官网的玩法技巧和规则 | 网上百家乐官网假| 皇冠网百家乐官网赢钱| 老k娱乐城| 大发888网页多少| 百家乐官网赌神| 都江堰市| 金博士娱乐城备用网址| 大发888技巧| 大都会百家乐的玩法技巧和规则 |