Менеджер контекста, временно направляющий stdout в указанный файлоподобный объект.
contextlib.redirect_stdout(target)
target -- Цель, файлоподобный объект, куда следует перенаправить stdout.

Перенаправит sys.stdout в файлоподобный объект.
Может быть полезен для использования со сторонним кодом, который использует только стандартный вывод stdout.

На заметку
Из-за «глобальной» природы sys.stdout не стоит использовать данный менеджер в коде библиотек и в подавляющем большинстве программ с нитями. Кроме того, он не работает с выводом подпроцессов (см. subprocess).

В примере ниже help() использует sys.stdout, однако при помощи рассматриваемого менеджера, можно перенаправить вывод в io.StringIO, в файл на диск, или в sys.stderr :

    # В строку help_output.
out = io.StringIO()
with redirect_stdout(out):
help(pow)
help_output = out.getvalue()

# В файл на диске.
with open('help.txt', 'w') as help_file:
with redirect_stdout(help_file):
help(pow)

# В stderr.
with redirect_stdout(sys.stderr):
help(pow)

На заметку
Созданный объект менеджера является реентерабельным. Это означает, что в рамках одного блока with, имеющего такие же вложенные блоки, его можно использовать несколько раз.
Синонимы поиска: contextlib.redirect_stdout, contextlib, redirect_stdout
На заметку
У нас есть новостная группа в Telegram. Там же можно обсудить интересующие вопросы. Ссылка в самом низу страницы.