У меня есть скрипт Python для постоянного мониторинга различных датчиков.Периодически мой скрипт Python использует операторы print ().
Моя цель - чтобы мой скрипт Python отправлял stdout
и stderr
в файл в режиме реального времени.
Myтекущее решение основано на следующих двух ответах:
Вот мой текущий код:
from contextlib import redirect_stdout, redirect_stderr
from os.path import join
from some_other_package import get_base_logging_path # returns filepath (str)
def main():
stdout_log_path = join(get_base_logging_path(), "stdout.txt")
stderr_log_path = join(get_base_logging_path(), "stderr.txt")
with open(stdout_log_path, 'w') as f1, redirect_stdout(f1), \
open(stderr_log_path, 'w') as f2, redirect_stderr(f2):
do_stuff()
Здесь я перехожу к переполнению стека: файлы stdout.txt
и stderr.txt
находятсяизменяется только когда скрипт либо выдает ошибку, либо я благополучно закрываю его с помощью control-C
.
. Я бы хотел (особенно stdout.txt
) обновляться каждый раз, когда в моем коде Python выполняется новый оператор print()
,Как сделать так, чтобы моя программа автоматически сбрасывала stdout
и stderr
в текстовый файл?
Примечание. Я попытался python -u
, но он не работает.