将2个csv文件与python进行比较时,会丢失较大文件上的匹配项

将2个csv文件与python进行比较时,会丢失较大文件上的匹配项,python,csv,Python,Csv,我对编程相当陌生,目前有一个问题困扰着我。我用python编写了一个小脚本,将其与包含必须维护的电子邮件组用户名的csv文件进行比较。我编写的脚本对于200-300个项目范围内的csv文件非常有效,但是,我刚刚开始测试具有数千个值的文件,我的脚本似乎错过了每个列表上的最后一个项目 这里的想法是我有两个csv文件,一个旧列表和一个新列表。我接收文件的方式有点挑剔,所以在处理列表之前,我会创建一个新的csv表单来处理每个csv。所以基本上是一个旧的清洁csv和一个新的清洁csv。然后,我将old_c

我对编程相当陌生,目前有一个问题困扰着我。我用python编写了一个小脚本,将其与包含必须维护的电子邮件组用户名的csv文件进行比较。我编写的脚本对于200-300个项目范围内的csv文件非常有效,但是,我刚刚开始测试具有数千个值的文件,我的脚本似乎错过了每个列表上的最后一个项目

这里的想法是我有两个csv文件,一个旧列表和一个新列表。我接收文件的方式有点挑剔,所以在处理列表之前,我会创建一个新的csv表单来处理每个csv。所以基本上是一个旧的清洁csv和一个新的清洁csv。然后,我将old_clean中的每个项目与new_clean中的每个项目进行检查,以查看每个项目是否在新列表中,如果不是,则将其添加到remove.csv中,以便在电子邮件系统中进行处理。然后,我以另一种方式运行测试,以查找进入add.csv的新名称。我遇到的问题是,列表上的姓氏(位于旧csv文件和新csv文件中)显示在add.csv和remove.csv上

正如我所说的,这只会发生在较大的文件中。我的代码如下,任何帮助都将不胜感激

import sys
import csv
import re
import os

###Works in python 2.5###

#create a new csv for cleaned values from first csv entered
o = open("first.csv","w")
data = open(sys.argv[1]).read()
o.write( re.sub(" ","",data) )
o.close()

#create a new csv for cleaned values from second csv entered
n = open("second.csv","w")
data = open(sys.argv[2]).read()
n.write( re.sub(" ","",data) )
n.close()

#create csv of names to remove from group
remove = open("Changes/remove.csv","w")

#create csv of names to add to group
add = open("Changes/add.csv","w")

time.sleep(3)

#adds any names from first list not found in second list to the remove.csv
for line in open("first.csv"):
    if line not in open("second.csv"):    
        remove.write(line)
remove.close()        

#adds any names from second list not found in first list to the add.csv        
for line in open ("second.csv"):
    if line not in open("first.csv"):
        add.write(line)
add.close()        

#remove the generated "clean" csv files
os.remove("first.csv")
os.remove("second.csv")

可能是输入文件中的最后一行没有换行符终止吗?我不认为这是问题所在,因为实际使用的文件是以编程方式创建的,与大小文件的创建方式相同。也许我应该尝试在列表的最后一项下面手动添加条目,看看这是否会改变什么。有趣的是,我在两个csv文件的末尾添加了相同的值,似乎解决了这个问题。然后把它们移到同一个庄园,它仍能正常工作。在清理文件的步骤中,我是否犯了导致错误的错误?不知道,代码对我来说很好。也许将
first.csv
second.csv
与原始数据进行比较可以提供一些见解。