将时差写入文件

时间:2014-10-06 07:13:30

标签: python file-io

我正在尝试编写一个日志文件,记录循环执行之间的时间差异。我是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")

有人可以告诉我为什么会这样,以及如何解决这个问题?我希望printwrite的行为方式相同。谢谢!

2 个答案:

答案 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()关闭打开的文件