contextlib.redirect_stderr (target)
target - The target, a file-like object where stderr should be redirected.
Will redirect sys.stderr
to file-like object .
May be useful for use with third-party code that only uses stderr
.
Note
From - due to the "global" nature of sys.stderr
, you should not use this manager in the library code and in the vast majority of programs with threads. Also, it doesn’t work with subprocess output (see subprocess
).
In the example below, a function
do_something ()
uses sys.stderr
to write error information to it, but using the manager in question , you can redirect this information to io.StringIO
or to a file on disk: # To errors.
errors_buffer = io .StringIO ()
with redirect_stderr (errors_buffer):
do_something ()
errors = errors_buffer.getvalue ()
# To a file on disk.
with open (’errors. txt’, ’w’) as errors_file:
with redirect_stderr (errors_file):
do_something ()
Notes
The created manager object is reentrant . This means that within a single with
block that has the same nested blocks, it can be used multiple times.