python - 检查文本文件更新结果打印输出两次
问题描述
我有一个不断更新的文本文件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
解决方案
我添加了 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)
推荐阅读
- git - 如何检查存储库是否包含已设置干净/涂抹过滤器但尚未处理的文件?
- javascript - AWS S3:MaxPostPreDataLengthExceeded 您上传文件之前的 POST 请求字段太大
- qt - 你能在 QML 声明性代码中发现错误吗?
- sql - 如何使用 avg()
- java - 为什么我的 AccBal 整数被设置回“0”值
- c - 动态分配的数组不能与 fscanf 一起使用?
- python - 在python中解析文本的问题
- jquery - 使用 JSON 在完整日历上呈现事件
- java - 我正在创建一个回收站视图,然后弹出:
- php - 如何获取 url 的最后一个结尾并使用相同的结尾来获取嵌入内容