我有一个Python脚本,我希望使用stdout生成子进程,并将stderr重定向到文件。我目前的方法如下:
import subprocess
# Do some stuff.
p = subprocess.Popen("/path/to/something",
stdout=open("/var/log/something.log", "a+"),
stderr=subprocess.STDOUT)
# Do some more stuff.
# Terminate the parent process and leave the child running and logging output.
这看起来像我想要的那样,但是在子进程中断之前没有任何内容从stdout记录到日志文件中。在不修改子进程的情况下,是否可以以与在控制台中显示stdout时类似的方式刷新输出? Stderr似乎正常冲洗。
我尝试使用bufsize=1
作为the docs说“1表示行缓冲”。