【发布时间】:2019-09-14 06:57:52
【问题描述】:
我有一个 Python 脚本来持续监控各种传感器。我的 Python 脚本定期使用 print() 语句。
我的目标是让我的 Python 脚本实时发送 stdout 和 stderr 到一个文件。
我目前的解决方案基于以下两个答案:
这是我当前的代码:
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()
这里是我来到 Stack Overflow 的地方:文件 stdout.txt 和 stderr.txt 仅在脚本出错或我使用 control-C 安全关闭它时才被修改。
我希望(尤其是 stdout.txt)在我的 Python 代码中每次执行新的 print() 语句时更新。如何让我的程序自动刷新 stdout 和 stderr 到文本文件?
注意:我试过python -u,但它似乎不起作用。
【问题讨论】:
标签: python stdout stderr file-writing