【发布时间】:2015-12-11 01:35:29
【问题描述】:
使用下面显示的代码,我将时间与电压读数记录到日志文件中。我注意到如果我在程序运行时“打开”日志文件,它不会显示任何新数据。它仅显示上次运行程序时 logfile.txt 中已经存在的数据。为了让新数据显示在 logfile.txt 中,我必须停止正在运行的程序(cntl-C),然后重新打开 logfile.txt。新数据必须记录在某处。为什么日志文件中不显示实时数据?
import sys, time, signal
with open('logfile.txt', 'a') as f:
while True:
volts = adc.read(256, 8)
print >> f, time(), volts
【问题讨论】:
-
嗯,它是缓冲的,所以要么使用
open('logfile.txt', 'a', 0)以非缓冲模式打开文件,要么每次你想从文件中读取“实时”数据时刷新文件(f.flush())从其他地方。 -
你用什么程序打开文件?是否意味着更新文件时更新?正在写入多少数据? Python 的记录器将刷新每个日志事件。但操作系统可能会缓冲文件流。
-
我使用鼠标手动打开日志文件,然后在文件管理器中找到 if 后单击其图标。
-
文件不大,大约 10 KiB。
-
@Rico 我的意思是显示文件内容的程序。当文件内容改变时它会自动重新加载文件吗?
标签: python