类型错误:“datetime.datetime"对象不可调用 [英] TypeError: 'datetime.datetime' object is not callable

查看:84
本文介绍了类型错误:“datetime.datetime"对象不可调用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一些 Python 代码可以遍历两个开始日期之间的所有日子.开始日期始终为 11 月 1 日,结束日期始终为 5 月 31 日.但是,代码会迭代多年.我的代码是这样的:

导入时间从日期时间导入日期时间从日期时间导入日期,时间增量为 tdlist1 = [2000,2001,2002,2003,2004,2005,2006,2007,2008,2009,2010,2011,2012,2013]list2 = [2001,2002,2003,2004,2005,2006,2007,2008,2009,2010,2011,2012,2013,2014]对于 zip(list1, list2) 中的 x, y:打印 "list1 - " + str(x)打印 "list2 - " + str(y)d1 = 日期(x,11,01)d2 = 日期(y,5,31)增量 = d2 - d1对于 i 在范围内(delta.days + 1):time1 = str(d1 + td(days=i))time2 = time1.split("-", 1)[0]time3 = time1.split("-", -1)[1]time4 = time1.rsplit("-", 1)[-1]时间 2 = 整数(时间 2)时间 3 = 整数(时间 3)时间 4 = 整数(时间 4)日期 = 日期时间(年 = 时间 2,月 = 时间 3,日 = 时间 4)...这里有一些处理...

在第一个循环完成之前,此代码可以正常工作.然后,在产生以下错误之前,将list1"和list2"的下两个值作为 2001 和 2002 打印到日志中:

回溯(最近一次调用最后一次):文件C:\Python27\newtets\newtets\spiders\test3.py",第 17 行,在 <module> 中d1 = 日期(x,11,01)类型错误:datetime.datetime"对象不可调用

它似乎没有解析第二次传递时分配给变量x"的年份.谁能告诉我这是为什么?

谢谢

解决方案

这是因为您有一个名为 date 的变量,它隐藏了导入的 datetime.date.使用不同的变量名称.

演示:

<预><代码>>>>从日期时间导入日期,日期时间>>>日期(01,11,01)日期时间.日期(1, 11, 1)>>>日期 = 日期时间(年 = 2014,月 = 1,日 = 2)>>>日期(01,11,01)回溯(最近一次调用最后一次):文件<stdin>",第 1 行,在 <module> 中类型错误:datetime.datetime"对象不可调用

I have some Python code that iterates through all the days between two start dates. The start date is always November 1st and the end date is always May 31st. However, the code iterates through years. My code is as so:

import time
from datetime import datetime
from datetime import date, timedelta as td

list1 = [2000,2001,2002,2003,2004,2005,2006,2007,2008,2009,2010,2011,2012,2013]
list2 = [2001,2002,2003,2004,2005,2006,2007,2008,2009,2010,2011,2012,2013,2014]


for x, y in zip(list1, list2):
    print "list1 - " + str(x)
    print "list2 - " + str(y)


    d1 = date(x,11,01)
    d2 = date(y,5,31)

    delta = d2 - d1



    for i in range(delta.days + 1):

        time1 =  str(d1 + td(days=i))
        time2 = time1.split("-", 1)[0]
        time3 = time1.split("-", -1)[1]
        time4 = time1.rsplit("-", 1)[-1]

        time2 = int(time2)
        time3 = int(time3)
        time4 = int(time4)

        date = datetime(year=time2, month=time3, day=time4)

...some processing here...

This code works fine until the first cycle is completed. It then prints the next two values of 'list1' and 'list2' as 2001 and 2002 to the log, before producing the following error:

Traceback (most recent call last):
  File "C:\Python27\newtets\newtets\spiders\test3.py", line 17, in <module>
    d1 = date(x,11,01)
TypeError: 'datetime.datetime' object is not callable

It doesn't seem to be resolving the year assigned to the variable 'x' on this second pass through. Can anyone tell me why this is?

Thanks

解决方案

This is because you are having a variable called date that is shadowing imported datetime.date. Use a different variable name.

Demo:

>>> from datetime import date, datetime
>>> date(01,11,01)
datetime.date(1, 11, 1)
>>> date = datetime(year=2014, month=1, day=2)
>>> date(01,11,01)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'datetime.datetime' object is not callable

这篇关于类型错误:“datetime.datetime"对象不可调用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆