子进程的输出在时间之前附加到文件

问题描述 投票:0回答:1

我正在使用subprocess将std输出和std错误输出到各自的文件中。当我尝试在相应的消息之前输出两个文件的时间时,最后会写入它。

下面是代码

import time
from subprocess import call

datetime_log = time.strftime("%Y-%m-%d %H:%M:%S")
with open("stdout.txt","ab") as stdout_file, open("stderr.txt","ab") as stderr_file:
    stdout_file.write(datetime_log + '\n'); stderr_file.write(datetime_log + '\n')
    call(['ls'], stdout = stdout_file, stderr = stderr_file)

stdout.txt的输出是:

pyshell1.py
pyshell2.py
stderr.txt
stdout.txt
2019-03-11 17:59:48
pyshell1.py
pyshell2.py
stderr.txt
stdout.txt
2019-03-11 18:06:17

如何在输出ls子进程命令之前打印时间。

python time subprocess stdout stderr
1个回答
2
投票

你需要刷新缓冲区:

stdout_file.write(datetime_log + '\n')
stderr_file.write(datetime_log + '\n')
stdout_file.flush()
stderr_file.flush()
call(['ls'], stdout=stdout_file, stderr=stderr_file)
© www.soinside.com 2019 - 2024. All rights reserved.