Python | Issue Warning Message

Problem – To have a program that can issue warning messages (e.g., about deprecated features or usage problems).

Code #1 : Use the warnings.warn() function

filter_none

edit
close

play_arrow

link
brightness_4
code

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

chevron_right


The arguments to warn() are a warning message along with a warning class, which is typically one of the following: UserWarning, DeprecationWarning, SyntaxWarning, RuntimeWarning, ResourceWarning, or FutureWarning.
The handling of warnings depends on how the interpreter is executed and other configuration. If Python with the -W all option is run, the following output is obtained:

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

Normally, warnings just produce output messages on standard error. To turn warnings into exceptions, use the -W error option.

Code #2 :

bash % python3 -W error example.py

Traceback (most recent call last):
    File "example.py", line 10, in 
        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 %

Issuing a warning message is often a useful technique for maintaining software and assisting users with issues that don’t necessarily rise to the level of being a full-fledged exception.

Code #3 : Warning message generated by destroying a file without closing it.

filter_none

edit
close

play_arrow

link
brightness_4
code

import warnings
  
warnings.simplefilter('always')
f = open('/etc/passwd')
  
del f

chevron_right


Output :

__main__:1: ResourceWarning: unclosed file 
<_io.TextIOWrapper name='/etc/passwd' mode='r' encoding='UTF-8'> 
  • By default, not all warning messages appear. The -W option to Python can control the output of warning messages.
  • -W all will output all warning messages, -W ignore ignores all warnings, and -W error turns warnings into exceptions.
  • As an alternative, one can use the warnings.simplefilter() function to control output. An argument of always makes all warning messages appear, ignore ignores all warnings, and error turns warnings into exceptions.
  • The warnings module provides a variety of more advanced configuration options related to the filtering and handling of warning messages.


My Personal Notes arrow_drop_up

Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.




Article Tags :

Be the First to upvote.


Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.