首页 > 解决方案 > 检查文本文件更新结果打印输出两次

问题描述

我有一个不断更新的文本文件foo.txt。我只想foo.txt在文件更新时阅读最后一行。我有一个while循环不断打开文件并检查它。在循环内部,我有一些代码打印文件的最后一行,然后将其存储在lastmsg.txt. 在下一次迭代中,它检查文件的最后一行是否不等于存储在lastmsg.txt. 如果两个值不相等(文件已更新并添加了新行),它将打印文件中的最后一条消息。这是代码

import time
while True:
    fileHandle = open ("foo.txt","r" )
    lineList = fileHandle.readlines()
    fileHandle.close()
    msg = lineList[len(lineList)-1]
    if(open("lastmsg.txt", "r").read() != msg):
        f = open("lastmsg.txt", "w")
        f.write(msg)
        print(msg)
    time.sleep(0.5)

这似乎有效,但是,它打印msg了两次。所以如果abc对文件进行修改,输出将是

abc
abc

标签: python

解决方案


我添加了 f.close() 行,然后它只打印一次 msg。

import time
while True:
    fileHandle = open ("foo.txt","r" )
    lineList = fileHandle.readlines()
    fileHandle.close()
    msg = lineList[-1]
    if(open("lastmsg.txt", "r").read() != msg):
        f = open("lastmsg.txt", "w")
        f.write(msg)
        f.close()  # <---- new line
        print(msg)
    time.sleep(0.5)

推荐阅读