Open In App

Python | Issue Warning Message

Last Updated : 12 Jun, 2019
Improve
Improve
Like Article
Like
Save
Share
Report

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




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


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.




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


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.


Like Article
Suggest improvement
Share your thoughts in the comments

Similar Reads