如何使用Python比较两个文本文件并输出差异及一致性判断结果
文本文件比对实现方案
需求
- 比对两个文本文件内容是否完全一致
- 内容完全一致输出
Yes - 存在差异输出
No,同时打印两份文件的差异内容
示例
文件1内容:
- Hello world!
- abc
文件2内容:- Hello world!
- xyz
预期输出:- No
- abc
- xyz
原有代码问题
你写的代码存在几个明显逻辑错误:
- 嵌套循环逻辑不合理,遍历完第一个文件的第一行后,第二个文件的指针已经走到末尾,后续行的比对会直接失效
- 只要有一行匹配就打印
Yes,不符合「整体内容完全一致才输出Yes」的需求 - 没有处理两个文件行数不一致的场景
- 未手动关闭文件句柄,存在资源泄漏风险
修正后代码
first_file = input("输入第一个文件名:") second_file = input("输入第二个文件名:") # 用with上下文管理器自动管理文件资源 with open(first_file, 'r', encoding='utf-8') as f1, open(second_file, 'r', encoding='utf-8') as f2: lines1 = f1.readlines() lines2 = f2.readlines() identical = True diff_content = [] max_length = max(len(lines1), len(lines2)) for idx in range(max_length): # 处理行数不一致的情况 l1 = lines1[idx].strip('\n') if idx < len(lines1) else "[文件1无对应行]" l2 = lines2[idx].strip('\n') if idx < len(lines2) else "[文件2无对应行]" if l1 != l2: identical = False diff_content.append(l1) diff_content.append(l2) if identical: print("Yes") else: print("No") for line in diff_content: print(line)
代码说明
- 支持两个文件行数不一致的差异比对场景
- 自动处理文件资源的打开关闭,不会出现资源泄漏
- 输出逻辑完全匹配需求要求
内容的提问来源于stack exchange,提问作者JobyB
相关产品推荐
相关产品推荐

