类型错误:“datetime.datetime"对象不可调用 [英] TypeError: 'datetime.datetime' object is not callable
问题描述
我有一些 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屋!