python strptime抛出元组索引超出范围

时间:2014-12-14 11:58:09

标签: python strptime

使用Redhat Python 2.7.5我试图使用YYYY-MM-DDdatetime.datetime.strptime格式解析日期,并且我间接地得到一个超出范围错误的元组,如下所示:

client.py in parse_date(d='2014-12-05')
    138                 return dt.datetime.strptime(d,"%Y-%m-%d")
    139             except:
    140                 raise Exception("Unexpected Date: '{0}' ({1})".format(d), e)
undefined, d = '2014-12-05', e undefined
<type 'exceptions.IndexError'>: tuple index out of range 
args = ('tuple index out of range',) 
message = 'tuple index out of range'

格式字符串看起来正确,问题的间歇性表明某种线程问题,但说实话我不知道,也不知道如何可靠地重现错误。有什么建议可以解决这个问题吗?

2 个答案:

答案 0 :(得分:1)

我认为问题在于你捕获异常的方式:

except:
    raise Exception("Unexpected Date: '{0}' ({1})".format(d), e)

此处,您没有正确地将变量e传递给format。相反,它应该是

except:
    raise Exception("Unexpected Date: '{0}' ({1})".format(d, e))

此外,如果e恰好是异常加注,您需要显式获取如下变量:

except Exception as e:
    raise Exception("Unexpected Date: '{0}' ({1})".format(d), e)

最后,最好捕获try块可以引发的特定错误,所以你应该这样做

except ValueError as e:
    raise Exception("Unexpected Date: '{0}' ({1})".format(d), e)

答案 1 :(得分:0)

所以Exception来自你的异常处理程序。格式只有一个参数,但使用两个。