У меня есть сценарий python, который вызывает другие сценарии и утилиты через подпроцесс. Открыть Я хочу захватить stdout и stderr как для самого потока сценария, так и для всех его дочерних элементов, направить их в файл и отобразить их на экране.
Я думал о создании подкласса TextIoWrapper и последующей передаче объекта в качестве параметра, где это уместно:
class MyOutput(TextIOWrapper):
pass
mo = MyOutput()
print("some log",file=mo)
subprocess.Popen("some command",stdout=mo,stderr=mo)
и т. Д.
Есть ли лучший способ?