我正在使用此脚本从Twilio下载短信日志文件。
https://github.com/asplunker/twilio-app/blob/master/bin/get_sms_logs.py
在第一次运行时,它正确地下载文件,但在第二次运行中它会抛出" index out of range error "
因此在函数中怀疑错误:
def write_records():
# avoid duplicates
data = []
if os.path.exists(LOG_FILE):
with codecs.open(LOG_FILE) as d:
file_data = d.readlines()
for line in file_data:
print line
date = line.split(',')[1]
if date == LAST_ENTRY:
data.append(date)
with codecs.open(LOG_FILE, 'a') as f:
for record in reversed(RECORDS):
if not record.split(',')[1] in data:
f.write(record)
f.write('\n')
我不确定第一次运行中的输出csv文件是否没有在一行中指定每条记录。
任何指针都会非常感激。
答案 0 :(得分:1)
我会添加一些错误处理来查找失败时的对象状态。
你有没有用过try / except? https://docs.python.org/2/tutorial/errors.html
基本上你可以像这样设置它
def write_records():
# avoid duplicates
try:
data = []
if os.path.exists(LOG_FILE):
with codecs.open(LOG_FILE) as d:
file_data = d.readlines()
for line in file_data:
print line
date = line.split(',')[1]
if date == LAST_ENTRY:
data.append(date)
with codecs.open(LOG_FILE, 'a') as f:
for record in reversed(RECORDS):
if not record.split(',')[1] in data:
f.write(record)
f.write('\n')
except IndexError:
#log variables here and examine the issue closely
答案 1 :(得分:1)
我能想到的第一件事是你的CSV文件没有被正确读取。
索引错误可能在这里发生:
date = line.split(',')[1]
尝试为日期添加条件:
date_ = line.split(',')
date = date_[1] if len(date_) >= 1 else ""
但你真的应该看看标准库中的CSV
答案 2 :(得分:0)