Python对比两个文本文件内容一致仍判定不同的问题求解
问题根因
你代码中读取文件内容的逻辑存在错误:str(open("text1.txt", "r")) 并没有读取文件的实际内容,只是把open()返回的文件对象本身转成了字符串,得到的是类似<_io.TextIOWrapper name='text1.txt' mode='r' encoding='cp936'>格式的字符串,两个文件对应的文件对象标识、内存地址本来就不一样,所以永远会判定不相等。
修复方案
你需要调用文件对象的read()方法读取实际内容,优化后的代码如下:
data = str(information) # 写入对照组文件 with open("text1.txt", "w+", encoding="utf-8") as f: f.write(data) while True: data2 = str(newinfo) # 写入实时更新的文件 with open("text2.txt", "w+", encoding="utf-8") as f: f.write(data2) # 正确读取两个文件的内容进行对比 with open("text1.txt", "r", encoding="utf-8") as f: read = f.read() with open("text2.txt", "r", encoding="utf-8") as f: read2 = f.read() if read2 != read: Notifica = True break
额外优化点
- 统一指定文件编码为
utf-8,避免不同系统默认编码不一致导致的内容判定误差 - 使用
with上下文管理器操作文件,不需要手动调用close(),避免文件句柄泄漏 - 可以添加适当的循环休眠时间,避免频繁读写文件占用过多CPU资源
内容的提问来源于stack exchange,提问作者VicGab
相关产品推荐
相关产品推荐

