如何用Python检测文本文件首行是否变更并实现单次打印
解决文本文件首行变更重复提示及无法检测后续变更的问题
原代码存在两个核心问题:
- 首行变更后持续打印提示:因为
initial变量始终保留初始值,每次循环对比都会触发else分支 - 无法检测后续变更:
initial未随首行更新,后续再变更时,当前值与旧初始值对比仍不等,只会重复旧提示,无法识别新变更
修正后的代码
import time def get_first_line(): with open('readme.txt') as f: return f.readline().strip('\n') def monitor_file(): current_line = get_first_line() print(f"初始首行值: {current_line}") while True: new_line = get_first_line() if new_line != current_line: print(f"首行已变更为: {new_line}") current_line = new_line # 更新基准值,避免重复打印并支持后续变更检测 time.sleep(0.5) # 添加延迟降低CPU占用 monitor_file()
关键修改说明
- 更新基准值:每次检测到首行变更后,立即将
current_line更新为新值,确保下次循环以最新值为对比基准,解决重复打印和无法检测后续变更的问题 - 优化输出内容:直接打印变更后的首行值,替代模糊提示,更直观
- 添加延迟:通过
time.sleep()降低无限循环的CPU占用率 - 语义化命名:将函数和变量名改为更清晰的名称,提升代码可读性
内容的提问来源于stack exchange,提问作者Ken Robertson
相关产品推荐
相关产品推荐

