Сообщить об ошибке.

Функции redirect_std*() модуля contextlib в Python

Перенаправить вывод из терминала в файл

Синтаксис:

import contextlib

contextlib.redirect_stdout(new_target)
contextlib.redirect_stderr(new_target)

Параметры:

  • new_target - объект перенаправления вывода

Возвращаемое значение:

Описание:

Функции contextlib.redirect_stdout() и contextlib.redirect_stderr() представляют собой менеджеры контекста для временного перенаправления sys.stdout или sys.stderr соответственно в другой файл или файловый объект.

Этот инструмент добавляет гибкость существующим функциям или классам, чей вывод жестко привязан к stdout или stderr.

Обратите внимание, что глобальный побочный эффект для sys.stdout означает, что этот менеджер контекста не подходит для использования в коде библиотеки и большинстве многопоточных приложений. Это также не влияет на вывод подпроцессов. Тем не менее, это все еще полезный подход для многих служебных скриптов.

По поведению этот контекстный менеджер будет контекстным менеджером c повторным входом.

Примеры:

Вывод функции help() обычно отправляется в sys.stdout. Можно записать этот вывод в строку, перенаправив вывод в объект io.StringIO:

import contextlib, io

s = io.StringIO()
with contextlib.redirect_stdout(s):
    help(pow)

>>> s.getvalue()[:50]
# 'Help on built-in function pow in module builtins:\n'

Чтобы отправить вывод функции help() в файл на диске, нужно перенаправить вывод в обычный файл:

with open('help.txt', 'w') as fp:
    with contextlib.redirect_stdout(fp):
        help(pow)

Чтобы отправить вывод help() в sys.stderr:

import contextlib, sys

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