我尝试制作一个脚本来读出csv文件并确定一些信息。
现在我收到错误:
Traceback (most recent call last):
File "/home/pi/vullijst/vullijst.py", line 26, in <module>
startdate = datetime.datetime.strptime (row[0],"%d-%m-%Y")
IndexError: list index out of range
脚本的一部分:
import csv
import datetime
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
#Variabelen
smtpserver = ''
smtplogin = ''
smtppassword = ''
sender = ''
csvfile = '/home/pi/vullijst/vullijst.csv'
#Inlezen CSV File
f = open(csvfile)
csv_f = csv.reader(f, delimiter=';')
today = datetime.datetime.now()
#Tijd bepalen en opstellen E-mail
for row in csv_f:
startdate = datetime.datetime.strptime (row[0],"%d-%m-%Y")
enddate = datetime.datetime.strptime (row[1],"%d-%m-%Y")
if today >= startdate and today <= enddate:
receiver = row[3]
csv文件具有以下结构:
1-10-2016;12-10-2016;Test 1;test0@email.com;06-123456789
12-10-2016;13-10-2016;Test 2;test1@email.com;06-123456789
13-10-2016;14-10-2016;Test 3;test2@email.com;06-123456789
14-10-2016;15-10-2016;Test 4;test3@email.com;06-123456790
15-10-2016;16-10-2016;Test 5;test4@email.com;06-123456791
16-10-2016;17-10-2016;Test 6;test5@email.com;06-123456792
17-10-2016;18-10-2016;Test 7;test6@email.com;06-123456793
如果我注释掉这条规则,那么我就不会收到以下规则的错误。有人知道出了什么问题吗?
答案 0 :(得分:0)
您的csv文件最后一行显示空行,在最后一行后显示实际数据。因此,您的脚本会读取所有实际行并处理它们,但是当最后一行被解析为空列表时它会中断。在这种情况下,您尝试解析为日期的row[0]
无效。
要避免此问题,请在循环顶部检查,如果row
为空,则会跳过循环体的其余部分。
for row in csv_f:
if not row: # skip empty rows
continue
startdate = datetime.datetime.strptime (row[0],"%d-%m-%Y")
# ...