Python Popen: запись в стандартный вывод и лог-файл одновременно
Я использую Popen для вызова сценария оболочки, который постоянно записывает свои stdout и stderr в файл журнала. Есть ли способ одновременно выводить файл журнала непрерывно (на экран) или, альтернативно, заставить сценарий оболочки одновременно записывать и в файл журнала, и в stdout?
Я в основном хочу сделать что-то подобное в Python:
cat file 2>&1 | tee -a logfile #"cat file" will be replaced with some script
Опять же, этот поток stderr / stdout соединяется с tee, который записывает его и в stdout, и в мой лог-файл.
Я знаю, как записать stdout и stderr в файл журнала на Python. Где я'Я застрял, как скопировать их обратно на экран:
subprocess.Popen("cat file", shell=True, stdout=logfile, stderr=logfile)
Конечно, я мог бы просто сделать что-то подобное, но есть ли способ сделать это без перенаправления дескриптора файла тройника и оболочки ?:
subprocess.Popen("cat file 2>&1 | tee -a logfile", shell=True)