我现在有一个脚本版本,它通过将两个csv文件逐个读取到一个列表/集合中来比较两个csv文件。 但是,csv目前太大,无法存储,所以我想逐行迭代并打印出不同的行。
我不能做两个csvreaders循环,因为这样内部循环将读取整个文件,而外部循环将在第一行
我宁愿这样做,而不是差异,这样当行不匹配时,我可以打印出额外的信息来找出原因
编辑:到目前为止,我做了这样的事情,但是csv太大了,不能一次加载到列表中
def readFile(filename,columns):
mylist=[]
with open(filename,'rb') as f:
reader = csv.reader(f)
for line in reader:
mylist.append(tuple(line[i] for i in columns))
return mylist
mylist1=readFile(filename1,columns)
mylist2=readFile(filename2,columns)
diff1=diff(mylist1,mylist2)
diff2=diff(mylist2,mylist2)
假设文件的行数相同,并且您只查找行内差异(即,比较第一个文件中的第1行和第二个文件中的第1行,依此类推),这样应该可以工作:
你可以试试这个密码。提供所有匹配值的集合。
编辑: 我正在使用行[1],因为我的文件有列标题。任何使用此代码比较没有列标题的文件的人,请使用行[0]。
我想到了一种逐行读取文件并应用md5sum/SHA1 sum的方法,然后比较这些值。如果空格或任何其他字符不重要,请在应用校验和之前删除它们
相关问题 更多 >
编程相关推荐