比较两个csv文件的内容是否一致

发布于:2025-07-06 ⋅ 阅读:(14) ⋅ 点赞:(0)

可以使用 pandas快速、可靠地比较两个 CSV 文件内容是否一致。以下是几种常用方法,从简单行列比较,到精细字段逐个比较:


✅ 方法一:简单比较(结构 + 内容)

import pandas as pd

# 加载两个 CSV 文件(确保读取方式相同)
df1 = pd.read_csv('file1.csv', dtype=str)
df2 = pd.read_csv('file2.csv', dtype=str)

# 比较结构和内容是否完全一致
is_equal = df1.equals(df2)

print("两个 CSV 内容是否完全一致?", is_equal)

✅ 方法二:逐行逐列对比,找出差异

import pandas as pd

df1 = pd.read_csv('file1.csv', dtype=str)
df2 = pd.read_csv('file2.csv', dtype=str)

# 确保两个 DataFrame 行列一致
if df1.shape != df2.shape:
    print("两个文件行数或列数不同!")
else:
    # 生成差异表
    diff = (df1 != df2)
    if diff.any().any():
        print("发现不一致的内容:")
        diff_locations = diff.stack()[diff.stack()]
        print(diff_locations)
        # 可显示不同值
        for idx, col in diff_locations.index:
            print(f"行 {idx}, 列 {col} 不同:file1='{df1.at[idx, col]}', file2='{df2.at[idx, col]}'")
    else:
        print("两个文件内容完全一致。")

✅ 方法三:文件哈希比较(最粗略)

适合文件内容相同但不比较顺序或格式:

import hashlib

def hash_file(path):
    with open(path, 'rb') as f:
        return hashlib.md5(f.read()).hexdigest()

hash1 = hash_file('file1.csv')
hash2 = hash_file('file2.csv')

print("文件内容是否一致:", hash1 == hash2)

但注意:

  • 字段顺序不同也会判定为不一致
  • 适合快速判断原始字节流是否一样

🔧 可选参数建议

如果你有换行、富文本或空白问题,推荐统一以下参数:

df1 = pd.read_csv('file1.csv', quoting=1, dtype=str, keep_default_na=False)
df2 = pd.read_csv('file2.csv', quoting=1, dtype=str, keep_default_na=False)

🧠 总结

方式 判断精度 适合情况
df1.equals(df2) 精确 快速判断是否完全相同
按单元格比较 查找哪些值不同
文件哈希 粗略 大文件快速比对,结构不敏感