我正在尝试编写一个日志文件,记录循环执行之间的时间差异。我是Python的新手,似乎我无法让它发挥作用。
这是循环:
def writeData(self):
f = open('logfile','w')
timeInMs = 0
while True:
lastTimeInMs = timeInMs
timeInMs = long(round(time.time() * 1000))
timeDifference = timeInMs - lastTimeInMs
print(timeDifference) #write to console
f.write(str(timeDifference) + "\n") #write to logfile
doc = {'foo': 'bar'}
self.db.save(doc)
它打印timeDifference
就好了,但logfile
仍为空。但是,如果我使用绝对时间,写logfile
就可以正常工作了!
f.write(str(timeInMs) + "\n")
有人可以告诉我为什么会这样,以及如何解决这个问题?我希望print
和write
的行为方式相同。谢谢!
答案 0 :(得分:2)
如果您希望输出在f.write()
来电后直接显示在文件中,则必须在致电f.flush()
后致电f.write()
。
虽然建议使用f.close()
,但这不是解决问题的方法。 f.close()
在关闭文件之前有效地调用f.flush()
;但是,为时已晚,所以要使用f.flush()
来关闭文件而使文件显示在文件中。
答案 1 :(得分:0)
我不确定令牌功能如何处理这些表达式:f.write(str(timeDifference) + "\n")
为什么不换到
timeDifference = str(timeDifference)+"\n"
f.write(timeDifference)
正如Khelwood在评论中指出的那样,不要忘记在while循环之外的函数末尾用f.close()
关闭打开的文件