以下是一个比较两个具有数值的CSV文件的示例代码:
import csv
def compare_csv_files(file1, file2):
# 读取第一个CSV文件
with open(file1, 'r') as csv_file1:
csv_reader1 = csv.reader(csv_file1)
data1 = list(csv_reader1)
# 读取第二个CSV文件
with open(file2, 'r') as csv_file2:
csv_reader2 = csv.reader(csv_file2)
data2 = list(csv_reader2)
# 比较两个CSV文件的行数和列数
if len(data1) != len(data2) or len(data1[0]) != len(data2[0]):
return "CSV文件的行数或列数不一致"
# 比较每个单元格的数值
differences = []
for i in range(len(data1)):
for j in range(len(data1[0])):
if data1[i][j] != data2[i][j]:
differences.append((i+1, j+1, data1[i][j], data2[i][j]))
if len(differences) > 0:
return differences
else:
return "两个CSV文件相同"
# 示例用法
file1 = 'file1.csv'
file2 = 'file2.csv'
result = compare_csv_files(file1, file2)
print(result)
上述代码假设CSV文件中的每个单元格只包含数值。它首先读取两个CSV文件,并将它们存储在data1
和data2
列表中。然后,它比较两个CSV文件的行数和列数是否相等。如果行数或列数不一致,它将返回相应的错误消息。
接下来,代码遍历每个单元格,并比较两个CSV文件中对应位置的数值。如果发现差异,它将将差异的行号、列号和数值存储在differences
列表中。
最后,代码检查differences
列表的长度,如果大于0,则返回差异的行号、列号和数值列表,否则返回"两个CSV文件相同"的消息。
你可以将file1
和file2
替换为你要比较的CSV文件的路径。