contextlib.redirect_stderr
Менеджер контекста, временно направляющий stderr в указанный файлоподобный объект.
contextlib.redirect_stderr(target)
target -- Цель, файлоподобный объект, куда следует перенаправить stderr.
Перенаправит
Может быть полезен для использования со сторонним кодом, который использует только стандартный вывод ошибок
В примере ниже некая функция
sys.stderr
в файлоподобный объект.Может быть полезен для использования со сторонним кодом, который использует только стандартный вывод ошибок
stderr
.На заметку
Из-за «глобальной» природы
sys.stderr
не стоит использовать данный менеджер в коде библиотек и в подавляющем большинстве программ с нитями. Кроме того, он не работает с выводом подпроцессов (см. subprocess
). В примере ниже некая функция
do_something()
использует sys.stderr
для записи в него информации об ошибках, однако при помощи рассматриваемого менеджера, можно перенаправить эту информацию в io.StringIO
или в файл на диск: # В строку errors.
errors_buffer = io.StringIO()
with redirect_stderr(errors_buffer):
do_something()
errors = errors_buffer.getvalue()
# В файл на диске.
with open('errors.txt', 'w') as errors_file:
with redirect_stderr(errors_file):
do_something()
На заметку
Созданный объект менеджера является реентерабельным. Это означает, что в рамках одного блока
with
, имеющего такие же вложенные блоки, его можно использовать несколько раз.
Синонимы поиска: contextlib.redirect_stderr, contextlib, redirect_stderr
На заметку
Зарегистрированные пользователи могут получать еженедельный дайджест обновлений на сайте.