我需要比较两个CSV文件并打印出第三个CSV文件中的差异。在我的例子中,第一个CSV是名为old.csv的旧哈希列表,第二个CSV是包含旧哈希和新哈希的新哈希列表。
下面是我的代码:
import csv
t1 = open('old.csv', 'r')
t2 = open('new.csv', 'r')
fileone = t1.readlines()
filetwo = t2.readlines()
t1.close()
t2.close()
outFile = open('update.csv', 'w')
x = 0
for i in fileone:
if i != filetwo[x]:
outFile.write(filetwo[x])
x += 1
outFile.close()
第三个文件是旧文件的副本,不是更新的。有什么问题吗?希望你能帮助我,非常感谢!!
PS:我不想使用diff
8条答案
按热度按时间mgdq6dx11#
问题是你要把
fileone
中的每一行与filetwo
中的同一行进行比较。一旦一个文件中多出一行,你就会发现这两行永远不会相等。试试这个:gcmastyq2#
您可能会发现此软件包很有用(csv-diff):
安装后,您可以从命令行运行它:
yhqotfr83#
使用集合来检测差异感觉很自然。
wztqucjr4#
我假设你的新文件和你的旧文件一样,除了在旧文件之间添加了一些行,两个文件中的旧行以相同的顺序存储。
试试这个:
字符串
with
和一些有意义的变量名,这使它更容易理解,并且您不需要csv
包,因为您在这里不使用它的任何功能。**更新:**这个解决方案不如Chris Mueller's one那么漂亮,Chris Mueller's one对于小文件来说是完美的,非常Python化,但是它只读取文件一次(保持原来算法的想法),因此如果你有更大的文件,它会更好。
oug3syen5#
byqmnocz6#
使用运行:
如果要从比较中删除任何列,请取消注解
df.drop
part并运行其中
x,y,z
是要删除的列号,index从0开始。wfveoks07#
感谢@vishnoo-rath在上述答案之一下的评论,提供了以下页面的链接:https://github.com/simonw/csv-diff#as-a-python-library
50pmv0ei8#
打开(“文件一. csv”,“r”)作为r1,打开(“文件二. csv”,“r”)作为r2,打开(“文件三. csv”,“w”,换行符=“”)作为r3:旧csv = r1.读取行()新csv = r2.读取行()