python一个更愚蠢的调试

时间:2013-04-04 09:48:14

标签: python

抱歉,我有点痛,但是我的代码损坏了,我无法理解是什么问题。我刚刚删除了一个if语句,但现在看来timedelta不再被识别,它打破了代码。我很确定我没有删除任何参考。我摸不着头脑,但找不到问题..

你知道出了什么问题吗?

import random
import datetime
import csv
from itertools import groupby



def generator():

    i=0
    while 1:
        yield random.randint(-1, 1), datetime.datetime.now()
        i=i+1


def keyfunc(timestamp,interval):
    xt = datetime.datetime(2013, 4,4)
    dt=timestamp
    delta_second =(dt - xt).seconds
    normalize_second = (delta_second / (interval*60)) * (interval*60)
    newtime = xt + timedelta(seconds=normalize_second)
    return newtime


mynumber = 100
for random_number, current_time in generator():
    mynumber += random_number
    reftime5min = keyfunc(current_time,5)


print mynumber,",", current_time, reftime5min

我现在得到的错误是:

Traceback (most recent call last):
  File "", line 35, in 
  File "", line 28, in keyfunc
NameError: global name 'timedelta' is not defined

2 个答案:

答案 0 :(得分:4)

timedelta更改为datetime.timedelta。您没有直接导入timedelta类,因此您需要使用限定名称。

答案 1 :(得分:1)

from datetime import timedelta

http://docs.python.org/2/library/datetime.html