我对编程很新,我目前被一个问题所困扰。我在python中编写了一个小脚本来与csv文件进行比较,后者包含必须维护的电子邮件组的用户名。我编写的脚本非常适用于200-300项目范围内的csv文件,但是,我刚刚开始测试具有几千个值的文件,我的脚本似乎错过了每个列表中的最后一项。
这里的想法是我有2个csv文件,一个旧列表和一个新列表。我收到文件的方式有点挑剔,所以在处理列表之前,我创建了一个新的csv表单,我正在处理每个csv。所以基本上是old_clean csv和new_clean csv。然后我检查old_clean中的每个项目对new_clean,看看每个项目是否在新列表中,如果它不是它被添加到remove.csv以便处理到电子邮件系统中。然后我以相反的方式运行测试,找到进入add.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")