【发布时间】:2020-10-20 19:16:59
【问题描述】:
我有两个 csv 文件 (old.csv and new.csv),其中包含大量数据。两个 csv 文件具有相同的数据,但每一行的排序可能不同。 old.csv 文件作为源文件。我很想比较两个 csv 文件,看看是否缺少任何行或是否有任何新行。
- 比较
old.csv和new.csv并查看new.csv中是否缺少任何行或new.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.csv 和new.csv 文件都应该与内容(每一行)、条目数和其他内容完全匹配。这两个文件应该没有任何区别。
【问题讨论】:
-
为什么不对这两个文件进行比较?
-
如果两个文件同时适合内存,您可以简单地将每个文件的行放在一个集合中并对其应用集合操作。
-
是的,它可以放入内存中。只有几 mb 的文件。
-
如果您碰巧在 Windows 上,请查看this answer。如果在 *nix 上,
diff呢,如之前的评论中所述。 -
@MichaelButscher 你能提供一个基于集合的方法的例子吗?