如何使用Python API在csv文件中输出twilio sms日志

时间:2014-08-09 14:42:53

标签: python csv twilio

我正在使用此脚本从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文件是否没有在一行中指定每条记录。

任何指针都会非常感激。

3 个答案:

答案 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

https://docs.python.org/2/library/csv.html

答案 2 :(得分:0)

有关如何导出SMS /呼叫日志的FAQ在PHP中显示了CSV示例。我自己是一个Python人,但我会根据具体情况使用它来快速而肮脏地测试它。

T::i