首页 > 解决方案 > 如何比较两个 csv 文件并打印所有差异

问题描述

我有两个(old.csv and new.csv)包含大量数据的 csv 文件。两个 csv 文件具有相同的数据,但每行的顺序可能不同。old.csv文件充当源文件。我很想比较两个 csv 文件,看看是否缺少任何行或是否有任何新行。

下面的代码我只检查new.csv不存在的新行,old.csv但我们如何才能检查所有其他内容。

with open('old.csv', 'r') as t1, open('new.csv', 'r') as t2:
    fileone = t1.readlines()
    filetwo = t2.readlines()

with open('update.csv', 'w') as outFile:
    for line in filetwo:
        if line not in fileone:
            outFile.write(line)

基本上old.csvnew.csv文件都应该与内容(每一行)、条目数和其他内容完全匹配。这两个文件之间应该没有任何区别。

标签: pythoncsv

解决方案


您可以考虑为此使用 difflib,但它与命令行 diff 具有相同的限制。当它只是被移动时,它可以将一条线报告为“新”。

假设顺序并不重要,那么基于集合的方法可能就是您所需要的。


推荐阅读