Я использую Popen для вызова оболочки script, которая постоянно записывает свои stdout и stderr в файл журнала. Есть ли способ одновременного вывода файла журнала непрерывно (на экран) или, альтернативно, сделать оболочку script одновременно записывать как файл журнала, так и 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)
Конечно, я мог бы просто сделать что-то подобное, но есть ли способ сделать это без перенаправления дескриптора файла tee и shell?:
subprocess.Popen("cat file 2>&1 | tee -a logfile", shell=True)