Python Glossary English

Python 3.4+contextlibпонятие

contextlib.redirect_stdout

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

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

Синтаксис

with contextlib.redirect_stdout(target): ...

Подмена глобальная: пока блок with активен, перенаправлен sys.stdout у всей программы, включая другие потоки — поэтому в библиотечном коде и многопоточных приложениях так делать не стоит. На вывод дочерних процессов и кода на C, пишущего прямо в дескриптор 1, это не влияет: перехватывается только то, что идёт через sys.stdout. Для ошибок есть парный redirect_stderr, а типичное применение — тесты и захват вывода чужой функции, которая печатает вместо того, чтобы возвращать значение.

Примеры

import contextlib, io
buf = io.StringIO()
with contextlib.redirect_stdout(buf):
    print('hi')
print(buf.getvalue().strip())   # → hi

См. также

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