可以使用 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) |
精确 | 快速判断是否完全相同 |
按单元格比较 | 高 | 查找哪些值不同 |
文件哈希 | 粗略 | 大文件快速比对,结构不敏感 |