异步将 std 输出和 err 输出重定向到文件

异步将 std 输出和 err 输出重定向到文件

我试图将带有线程的某些程序的输出重定向到某个文件。

我尝试过跑步command > file 2&>1,但如果command没有停止跑步,file仍然会是空的。

有没有办法将输出异步转储到file

示例 python 片段:

import _thread

def run():
    raise ValueError('plah')

_thread.start_new_thread(run, ())
while True:
    pass

在手动停止程序之前,运行python program.py 2> log.txt不会产生输出。log.txt

答案1

进行输出无缓冲的。使用 Python 执行此操作的一个简单方法是设置PYTHONUNBUFFERED

PYTHONUNBUFFERED=1 python program.py 2>log.txt

答案2

Python 默认缓冲输出。给出-u标志,或者放置PYTHONUNBUFFERED=yes以避免这种情况。

相关内容