Python Cookbook(第3版)中文版:14.11 輸出警告資訊

來源:互聯網
上載者:User

標籤:沒有   例子   異常   wrap   argument   www.   ted   模組   imp   

14.11 輸出警告資訊?問題?

你希望自己的程式能產生警告資訊(比如廢棄特性或使用問題)。

解決方案?

要輸出一個警告訊息,可使用 warning.warn() 函數。例如:

import warningsdef func(x, y, logfile=None, debug=False):    if logfile is not None:         warnings.warn(‘logfile argument deprecated‘, DeprecationWarning)    ...

warn() 的參數是一個警告訊息和一個警告類,警告類有如下幾種:UserWarning, DeprecationWarning,
SyntaxWarning, RuntimeWarning, ResourceWarning, 或 FutureWarning.

對警告的處理取決於你如何運行解譯器以及一些其他配置。
例如,如果你使用 -W all 選項去運行Python,你會得到如下的輸出:

bash % python3 -W all example.pyexample.py:5: DeprecationWarning: logfile argument is deprecated  warnings.warn(‘logfile argument is deprecated‘, DeprecationWarning)

通常來講,警告會輸出到標準錯誤上。如果你想講警告轉換為異常,可以使用 -W error 選項:

bash % python3 -W error example.pyTraceback (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 deprecatedbash %
討論?

在你維護軟體,提示使用者某些資訊,但是又不需要將其上升為異常層級,那麼輸出警告資訊就會很有用了。
例如,假設你準備修改某個函數庫或架構的功能,你可以先為你要更改的部分輸出警告資訊,同時向後相容一段時間。
你還可以警告使用者一些對代碼有問題的使用方式。

作為另外一個內建函數庫的警告使用例子,下面示範了一個沒有關閉檔案就銷毀它時產生的警告訊息:

>>> 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‘>>>>

預設情況下,並不是所有警告訊息都會出現。-W 選項能控制警告訊息的輸出。
-W all 會輸出所有警告訊息,-W ignore 忽略掉所有警告,-W error 將警告轉換成異常。
另外一種選擇,你還可以使用 warnings.simplefilter() 函數控制輸出。
always 參數會讓所有警告訊息出現,`ignore 忽略調所有的警告,error 將警告轉換成異常。

對於簡單的產生警告訊息的情況這些已經足夠了。
warnings 模組對過濾和警告訊息處理提供了大量的更進階的配置選項。
更多資訊請參考 Python文檔

艾伯特(http://www.aibbt.com/)國內第一家人工智慧門戶

Python Cookbook(第3版)中文版:14.11 輸出警告資訊

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.