warnings.warn()和logging.warn()之間的差別在於它們的作用和應該如何使用?Python warnings.warn()與logging.warning()
回答
一個會引發一個可以根據需要捕獲或忽略的異常,另一個可以根據當前日誌記錄級別向日志中添加一個條目。當一個人在代碼中警告各種事情時應該使用一個,而在登錄時應該使用另一個。
我同意其他答案 - logging
是用於日誌記錄和warning
是警告 - 但我想添加更多的細節。
這是一個教程式HOWTO,帶您瞭解使用logging
模塊的步驟。 http://docs.python.org/2/howto/logging.html
它直接回答你的問題:
warnings.warn()在庫中的代碼,如果這個問題是可以避免和 客戶端應用程序應該進行修改,以消除此警告
logging.warning ()如果沒有什麼客戶端應用程序可以做 關於這種情況,但事件仍應該注意到
logging.warning
只是在WARNING
級別上記錄了某些內容,方式與logging.info
級別的日誌級別爲INFO
級別和logging.error
級別的級別相同。它沒有特殊的行爲。
warnings.warn
發射Warning
,其可以取決於精確Warning
子發射和如何配置您警告過濾被打印到stderr
,完全忽略,或拋出像正常Exception
(可能崩潰應用程序)。默認情況下,警告將打印到stderr
或忽略。
由warnings.warn
發出的警告常常對知道有用,但容易錯過(特別是如果您在後臺進程中運行Python程序並且不捕獲stderr
)。出於這個原因,將它們記錄下來可能會有所幫助。 Python在logging
模塊和warnings
模塊之間提供了一個內置集成,讓您可以執行此操作;只需在腳本開始時撥打logging.captureWarnings(True)
,warnings
模塊發出的所有警告將自動記錄在WARNING
的級別。
除了在庫代碼canonical explanation in official documentation
warnings.warn()如果該問題是可以避免的,客戶端應用程序應該進行修改,以消除此警告
logging.warning()如果有什麼客戶端應用程序可以處理這種情況,但仍應注意事件
還值得注意的是,默認情況下warnings.warn("same message")
只會顯示一次。這是一個重大的顯着差異。引自official doc
通常會抑制針對相同源位置的特定警告的重複。
>>> import warnings
>>> warnings.warn("foo")
__main__:1: UserWarning: foo
>>> warnings.warn("foo")
>>> warnings.warn("foo")
>>>
>>> import logging
>>> logging.warn("bar")
WARNING:root:bar
>>> logging.warn("bar")
WARNING:root:bar
>>> logging.warn("bar")
WARNING:root:bar
>>>
>>>
>>> warnings.warn("fur")
__main__:1: UserWarning: fur
>>> warnings.warn("fur")
>>> warnings.warn("fur")
>>>
- 1. 如何使用:python warnings.warn()?
- 2. 使Python的`warnings.warn()`不提自己
- 3. Python中的logging.warn和logging.warning有什麼區別?還是他們是一樣的?
- 4. 與Python Python Foursquare Oauth
- 5. 與Python
- 6. 與Python
- 7. 與Python
- 8. 與Python
- 9. 與Python
- 10. 與python
- 11. 與Python
- 12. 與Python
- 13. 與Python
- 14. 與Python
- 15. 與Python
- 16. 與Python
- 17. 與Python
- 18. 與Python
- 19. 與Python
- 20. sftp從Windows到Python與Python
- 21. 系統python與用戶python
- 22. 與Python的Python交互?
- 23. Python與Python的鉤子
- 24. Python與聲明
- 25. Python numpy.square與**
- 26. Python與xampp
- 27. 如何與Python
- 28. NRZ-S與Python
- 29. 如何與Python
- 30. Python BS4與SDMX