a = a.replace('\r\n', '\n').strip()
b = b.replace('\r\n', '\n').strip()
print(a == b, len(a), len(b))

配置比对脚本判断两段文本不同,肉眼逐行看完全一致。先别急着动参数,把报错原文和时间点记下来,顺序反了容易白折腾。

原因不复杂,Windows 换行是回车加换行,Linux 只有换行,直接比较就不相等,编辑器自动转换还会让文件整体变化。

围绕「换行符比较」排查时,命令行跑一遍比在面板里点十次有用,面板会替你做掉不少隐式操作。动手前把原文件复制一份带时间戳,出问题立刻换回去,比现场分析快得多。

一次只改一处,改完立刻验证,几个改动叠在一起,出问题就说不清是谁导致的。先做最小复现,能稳定跑出来的问题,排查成本会低一个数量级。

别只看报错的最后一行,往上看几行,真正的起因通常在上面。同类问题如果隔一段时间又出现,多半是某个定时任务或重启流程把改动冲掉了。

处理上按这个顺序:比较前统一换行符;去除首尾空白;输出差异位置便于确认。

改完只确认一件事:两段内容比较结果一致,差异检测不再误报。

作者 9823189