我正在写一些需要两个 CSV 的内容:#1 是电子邮件列表,每封电子邮件收到 # 封电子邮件,#2 是记录中的每个电子邮件地址的目录,每个报告期间收到的电子邮件编号,日期在顶部注释列。
import csv
from datetime import datetime
datestring = datetime.strftime(datetime.now(), '%m-%d')
storedEmails = []
newEmails = []
sortedList = []
holderList = []
with open('working.csv', 'r') as newLines, open('archive.csv', 'r') as oldLines: #readers to make lists
f1 = csv.reader(newLines, delimiter=',')
f2 = csv.reader(oldLines, delimiter=',')
print ('Processing new data...')
for row in f2:
storedEmails.append(list(row)) #add archived data to a list
storedEmails[0].append(datestring) #append header row with new date column
for col in f1:
if col[1] == 'email' and col[2] == 'To Address': #new list containing new email data
newEmails.append(list(col))
counter = len(newEmails)
n = len(storedEmails[0]) #using header row len to fill zeros if no email received
print(storedEmails[0])
print (n)
print ('Updating email lists and tallies, this could take a minute...')
with open ('archive.csv', 'w', newline='') as toWrite: #writer to overwrite old csv
writer = csv.writer(toWrite, delimiter=',')
for i in newEmails:
del i[:3] #strip useless identifiers from data
if int(i[1]) > 30: #only keep emails with sufficient traffic
sortedList.append(i) #add these emails to new sorted list
CSV 看起来与此类似。
我不确定我在哪里出错了 - 但它不断产生重复的条目。一些功能是存在的,但我已经使用它太久了,我的视野狭隘,试图找出我的循环做错了什么。
我知道我的零填充部分最终也是错误的,因为它将附加到新创建的记录的末尾,而不是填充零直到其第一次出现。
我确信有更有效的方法可以做到这一点,我是编程新手,所以它可能过于复杂和混乱 - 最初我尝试将 CSV 与 CSV 进行比较,并意识到这是不可能的,因为你不能同时读写时间,所以我尝试转换为使用列表,我也知道当列表变大时,由于内存限制,列表不会永远工作。
慕侠2389804
慕沐林林
相关分类