Python Glossary English

Python 3.5+contextlibпонятие

contextlib.redirect_stderr

перенаправление

Контекстный менеджер: временно перенаправляет sys.stderr в указанный файловый объект.

Синтаксис

with contextlib.redirect_stderr(target): ...

Подменяется только sys.stderr на уровне Python, поэтому вывод из C-расширений и из дочерних процессов, пишущих в дескриптор 2 напрямую, вы не поймаете. Изменение глобальное, а значит не потокобезопасное: пока блок активен, перенаправление видят все потоки — для библиотечного кода это плохой выбор.

Примеры

import contextlib, io, sys
buf = io.StringIO()
with contextlib.redirect_stderr(buf):
    print('err', file=sys.stderr)
print(buf.getvalue().strip())   # → err

См. также

Открыть в полном глоссарииdocs.python.orgСообщить о неточности