查找两个CSV文件的差异

-2 投票
1 回答
1149 浏览
提问于 2025-04-18 18:32

我有两个csv文件,分别叫做 x.csvy.csvx.csv 里只有一行数据,内容是 列A:0, 列B:1, 列C:2, 列D:3。而 y.csv 里也只有一行,内容是 列A:2, 列B:3, 列C:4。我想用Python找出这两个csv文件之间的差异,并把结果输出到第三个csv文件里。

到目前为止,我尝试过 with open('x.csv','rb') as f1, open('y.csv','rb') as f2 这样的代码。

1 个回答

0

根据我对这个问题的理解,这个方法是用来比较两个文件,并生成一个第三个csv文件,里面记录每个单元格的不同之处。就我个人而言,我觉得这个方法不是特别优雅,可能在很多情况下会出现问题,但至少可以让你入门。这部分内容是参考了评论中提到的问答。

import csv


def csv_get(csvfile):
    with open(csvfile) as f:
        for row in csv.reader(f):
            for i in row:
                yield i


def csv_cmp(csvfile1, csvfile2, output):
    row = []
    read_file_2 = csv_get(csvfile2)

    for value_1 in csv_get(csvfile1):
        value_2 = read_file_2.next()
        print("File 1: {} File 2: {}").format(value_1, value_2)
        difference = int(value_1) - int(value_2)
        row.append(difference)

    with open(output, "w") as output_file:
        csv.writer(output_file).writerow(row)

    read_file_2.close()

csv_cmp(csvfile1="C:\\...\\a.csv",
        csvfile2="C:\\...\\b.csv",
        output="C:\\...\\c.csv")

撰写回答