Python如何輸出警告信息
問(wèn)題
你希望自己的程序能生成警告信息(比如廢棄特性或使用問(wèn)題)。
解決方案
要輸出一個(gè)警告消息,可使用 warning.warn()
函數(shù)。例如:
import warnings def func(x, y, logfile=None, debug=False): if logfile is not None: warnings.warn('logfile argument deprecated', DeprecationWarning) ...
warn()
的參數(shù)是一個(gè)警告消息和一個(gè)警告類(lèi),警告類(lèi)有如下幾種:UserWarning, DeprecationWarning, SyntaxWarning, RuntimeWarning, ResourceWarning, 或 FutureWarning.
對(duì)警告的處理取決于你如何運(yùn)行解釋器以及一些其他配置。 例如,如果你使用 -W all
選項(xiàng)去運(yùn)行Python,你會(huì)得到如下的輸出:
bash % python3 -W all example.py
example.py:5: DeprecationWarning: logfile argument is deprecated
warnings.warn('logfile argument is deprecated', DeprecationWarning)
通常來(lái)講,警告會(huì)輸出到標(biāo)準(zhǔn)錯(cuò)誤上。如果你想講警告轉(zhuǎn)換為異常,可以使用 -W error
選項(xiàng):
bash % python3 -W error example.py
Traceback (most recent call last):
File "example.py", line 10, in <module>
func(2, 3, logfile='log.txt')
File "example.py", line 5, in func
warnings.warn('logfile argument is deprecated', DeprecationWarning)
DeprecationWarning: logfile argument is deprecated
bash %
討論
在你維護(hù)軟件,提示用戶某些信息,但是又不需要將其上升為異常級(jí)別,那么輸出警告信息就會(huì)很有用了。 例如,假設(shè)你準(zhǔn)備修改某個(gè)函數(shù)庫(kù)或框架的功能,你可以先為你要更改的部分輸出警告信息,同時(shí)向后兼容一段時(shí)間。 你還可以警告用戶一些對(duì)代碼有問(wèn)題的使用方式。
作為另外一個(gè)內(nèi)置函數(shù)庫(kù)的警告使用例子,下面演示了一個(gè)沒(méi)有關(guān)閉文件就銷(xiāo)毀它時(shí)產(chǎn)生的警告消息:
>>> import warnings >>> warnings.simplefilter('always') >>> f = open('/etc/passwd') >>> del f __main__:1: ResourceWarning: unclosed file <_io.TextIOWrapper name='/etc/passwd' mode='r' encoding='UTF-8'> >>>
默認(rèn)情況下,并不是所有警告消息都會(huì)出現(xiàn)。-W 選項(xiàng)能控制警告消息的輸出。 -W all 會(huì)輸出所有警告消息,-W ignore 忽略掉所有警告,-W error 將警告轉(zhuǎn)換成異常。 另外一種選擇,你還可以使用 warnings.simplefilter()
函數(shù)控制輸出。 always 參數(shù)會(huì)讓所有警告消息出現(xiàn),`ignore 忽略調(diào)所有的警告,error 將警告轉(zhuǎn)換成異常。
對(duì)于簡(jiǎn)單的生成警告消息的情況這些已經(jīng)足夠了。 warnings 模塊對(duì)過(guò)濾和警告消息處理提供了大量的更高級(jí)的配置選項(xiàng)。 更多信息請(qǐng)參考 Python文檔
以上就是Python如何輸出警告信息的詳細(xì)內(nèi)容,更多關(guān)于Python 輸出警告信息的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Python + Flask 實(shí)現(xiàn)簡(jiǎn)單的驗(yàn)證碼系統(tǒng)
這篇文章主要介紹了Python + Flask 制作一個(gè)簡(jiǎn)單的驗(yàn)證碼系統(tǒng),本文圖文并茂給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-10-10Python機(jī)器學(xué)習(xí)入門(mén)(四)之Python選擇模型
這篇文章主要介紹了Python機(jī)器學(xué)習(xí)入門(mén)知識(shí),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-08-08python將字典內(nèi)容存入mysql實(shí)例代碼
這篇文章主要介紹了python將字典內(nèi)容存入mysql實(shí)例代碼,具有一定借鑒價(jià)值,需要的朋友可以參考下2018-01-01Python導(dǎo)入torch包的完整方法過(guò)程
這篇文章主要給大家介紹了關(guān)于Python導(dǎo)入torch包的完整方法, python torch又稱(chēng)PyTorach,是一個(gè)以Python優(yōu)先的深度學(xué)習(xí)框架,一個(gè)開(kāi)源的Python機(jī)器學(xué)習(xí)庫(kù),用于自然語(yǔ)言處理等應(yīng)用程序,需要的朋友可以參考下2023-12-12python中列表推導(dǎo)式與生成器表達(dá)式對(duì)比詳解
python當(dāng)然不是一門(mén)編譯型語(yǔ)言,但是它還是要被解析成二進(jìn)制的字節(jié)碼才能被執(zhí)行,執(zhí)行它的正是python解釋器,下面這篇文章主要給大家介紹了關(guān)于python中列表推導(dǎo)式與生成器表達(dá)式對(duì)比的相關(guān)資料,需要的朋友可以參考下2023-01-01python神經(jīng)網(wǎng)絡(luò)Xception模型復(fù)現(xiàn)詳解
這篇文章主要為大家介紹了python神經(jīng)網(wǎng)絡(luò)Xception模型復(fù)現(xiàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05Linux環(huán)境下MySQL-python安裝過(guò)程分享
這篇文章主要介紹了Linux環(huán)境下MySQL-python安裝過(guò)程分享,本文使用的編譯方式安裝,需要的朋友可以參考下2015-02-02pyecharts動(dòng)態(tài)軌跡圖的實(shí)現(xiàn)示例
這篇文章主要介紹了pyecharts動(dòng)態(tài)軌跡圖的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-04-04pytorch實(shí)現(xiàn)MNIST手寫(xiě)體識(shí)別
這篇文章主要為大家詳細(xì)介紹了pytorch實(shí)現(xiàn)MNIST手寫(xiě)體識(shí)別,使用全連接神經(jīng)網(wǎng)絡(luò),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-02-02