我试图读取python中每20秒更新一次的日志文件。到目前为止,我只能读取一个静态文件。我试着读入这些值,用高位图把它们绘制在一个图表上。我能够使用静态文件绘制值。不过,我想图表是实时的。有人能帮我吗
with open(self.filename) as f:
cpu = []
idle = []
wait = []
ld5 = []
ld10 = []
ld15 = []
load = []
swapu = []
swapf = []
#need to remove all the white space in the file
for line in f:
if line is not None:
stripped = line.strip()
dstat_tokens = self.whitespace_re.split(stripped)
#dstat_tokens = self.whitespace_re.split(stripped)
dstat_tokens = line.split(',')
(timestamp) = dstat_tokens[0:1]
(system,user,idl, wt, hwi, sfi) = dstat_tokens[1:7];
(diskread,diskwrite) = dstat_tokens[7:9]
(pagein,pageout) = dstat_tokens[9:11]
(load5,load10,load15) = dstat_tokens[11:14]
(used,buffers,cache,free) = dstat_tokens[14:18]
(swapused,swapfree) = dstat_tokens[18:20]
(interrupts,contextswitches) = dstat_tokens[20:22]
(receive,send) = dstat_tokens[22:24]
(runnable,uninterruptable,new) = dstat_tokens[24:27]
#print "Stripping %s" % timestamp[0]
ts = time.strptime(timestamp[0], "%d %b %Y %H:%M:%S CET")
dt = datetime.fromtimestamp(time.mktime(ts))
returned_time = dt.strftime("%d/%m/%Y %H:%M:%S")
#print returned_time
cpu.append({"ts": returned_time, "value": float(system)})
idle.append({"ts": returned_time, "value": float(idl)})
wait.append({"ts": returned_time, "value": float(wt)})
ld5.append({"ts": returned_time, "value": float(load5)})
ld10.append({"ts": returned_time, "value": float(load10)})
ld15.append({"ts": returned_time, "value": float(load15)})
load.append({"ts": returned_time, "value": float(load5)})
swapu.append({"ts": returned_time, "value": float(swapused)})
swapf.append({"ts": returned_time, "value": float(swapfree)})
self.data["cpu"] = cpu
self.data["idle"] = idle
self.data["load5"] = ld5
self.data["load10"] = ld10
self.data["load15"] = ld15
self.data["swapused"] = swapu
self.data["swapfree"] = swapf`
我对您的问题的理解是,您希望在每次更新日志文件时更新图形。您可以这样做,每次读取时将文件的长度存储在一个txt文档中,然后每
x
秒更新一次图形,检查该txt文档并从中获取文件位置,然后seek()
到该位置我对我的python已经生疏了,不记得该怎么做了,但这是我的想法。如果有人知道如何真正做到这一点,那么请更新我的代码。如果你有任何问题,请告诉我,我会尽力澄清的
相关问题 更多 >
编程相关推荐