стандартный вывод Python перенаправления с функцией печати, можно ли распространить на несколько выходов, и каковы сроки? - PullRequest
2 голосов
/ 08 апреля 2019

Я прочитал несколько вопросов о том, как использовать функцию печати для записи в файл путем перенаправления стандартного вывода. Я нахожу это потенциально полезным для ведения журнала (где модуль ведения журнала иногда неудобен), но мне интересно, есть ли способ отправить вывод нескольким адресатам. В основном предлагаются следующие решения:

  1. Переназначить стандартный вывод с помощью sys.stdout=f #f - это нечто, похожее на файл
  2. Использование contextlib.redirect_stdout

Таким образом, каждый раз, когда в коде something есть print(something) перенаправлен на f. Я ищу что-то вроде

redirect_stdout([sys.stdout,f])

, который выводит каждый something в файл f и обычный вывод.

Кроме того, каково время вывода на печать (имеется в виду, если есть функция с несколько операторов печати, когда содержимое сбрасывается на f и stdout, и что, если возникает ошибка?)?

Я провел некоторое расследование, но не смог найти решение, поэтому я думаю, что это выше моих знаний.

1 Ответ

3 голосов
/ 22 апреля 2019

В Python-3 встроенная функция print уже имеет аргумент ключевого слова file, который перенаправляет вывод в указанный файл. Таким образом, простой способ отправить вывод нескольким адресатам - использовать два оператора print.

print(something)
print(something, file=f)

См. этот ответ для более углубленного обсуждения.

...