python - 子进程的输出在时间之前被附加到文件中
问题描述
我正在使用子进程将标准输出和标准错误输出到它们各自的文件。当我尝试在各自的消息之前向两个文件输出时间时,它会在最后写入。
下面是代码
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
解决方案
您需要刷新缓冲区:
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)
推荐阅读
- angular - Firebase 云消息未显示在 Angular 页面中
- angular - Angular TypeScript 使用对话框更改/替换数组中的项目
- amazon-web-services - 不同可用区上的 AWS DMS 复制实例连接问题
- json - Oracle 选择 JSON 列作为键/值表
- go - 如何使 opentracing 与 opentelemetry 一起工作
- elasticsearch - 如何使用 query_string 同时匹配嵌套和非嵌套字段?
- python - Torchtext 与 Pytorch v1.10?
- ms-access - MS Access mid 和 instr 函数
- c++ - 如何在没有 pow()、函数或递归的情况下在 c/c++ 中使用幂函数
- r - 尝试使用 rvest 提交表单时出现卷曲错误