向fi写入时差

2024-03-29 12:10:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试编写一个日志文件,记录循环执行之间的时间差。我对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的行为是一样的。谢谢!你知道吗


Tags: 文件toselfdoctime记录writelogfile
2条回答

我不确定write函数如何处理这些表达式:f.write(str(timeDifference) + "\n") 你为什么不换成

timeDifference = str(timeDifference)+"\n"
f.write(timeDifference)

正如Khelwood在注释中指出的那样,不要忘记在while循环之外的函数末尾使用f.close()关闭打开的文件

如果希望输出直接出现在f.write()调用之后的文件中,则必须在f.write()调用之后调用f.flush()。你知道吗

虽然有人提出f.close(),但这并不是问题的解决办法。f.close()在关闭文件之前有效地调用f.flush();但是,那太晚了,所以要在不关闭文件的情况下让写入的数据出现在文件中,请使用f.flush()。你知道吗

相关问题 更多 >