Предположим, у вас есть большой сценарий, который записывает в стандартный вывод во многих местах, как напрямую (с использованием функций Python, таких как print()
или logging
, который идет в stdout
), так и косвенно, запуская subprocess
записи, которые пишут в стандартный вывод.
Существует ли тривиальный способ перехвата всего этого стандартного вывода?
Например, если вы хотите, чтобы скрипт завершил отправку электронного письма со всеми его выводами.
Под «тривиальным» я подразумеваю постоянное, а не линейное изменение кода.В противном случае, я полагаю, вам придется вводить параметры перенаправления (и некоторую логику накопления) в каждый вызов subrprocess
.Вы можете перехватить весь вывод самого скрипта, перенаправив sys.stdout
, однако я не вижу похожего «универсального» тривиального решения для всех вызовов subprocess
или вообще любого другого типа кода, который вы можете использоватьдля запуска этих подпроцессов.
Есть ли какое-либо такое решение, или нужно использовать скрипт бегуна, который будет вызывать этот скрипт Python как подпроцесс и захватывать все stdout
из этого подпроцесса?