Python 'datetime.datetime' 对象不可下标访问
首先,我不是一个Python开发者。我正在尝试修复一个在命令行中执行的Python脚本中的问题。这个脚本是由一个不再在这里的人写的,他也不愿意再帮忙解决问题。
这个脚本使用的是Python 2.5,目前无法升级。以下是相关的代码行:
start_time = datetime.strptime(str(paf.Start),"%Y-%m-%d %H:%M:%S")
dict_start = datetime(*start_time[:6])
end_time = datetime.strptime(str(paf.End),"%Y-%m-%d %H:%M:%S")
dict_end = datetime(*end_time[:6])
当运行这段代码时,它会产生一个错误,错误信息是:'datetime.datetime'对象不可下标。
这是导入语句:
from datetime import datetime
我感觉这应该是个简单的问题,但由于这不是我的母语,而且在谷歌上也找不到有用的结果,我现在卡住了。我尝试了几种不同的导入方法,得到了不同的错误,但都是和这些语句有关。任何帮助都将非常感激。
6 个回答
这不是导入的问题。是 *start_time[:6] 和 *end_time[:6] 让Python不喜欢。把它换掉就行。
看起来你只是想要时间,对吧?datetime.strptime这个方法会返回一个'datetime'对象,因此下面这些属性就包含了时间的信息:datetime.day(天)、datetime.hour(小时)、datetime.year(年)等等。
罗伯特,试着把
dict_start = datetime(*start_time[:6])
换成
dict_start = start_time
然后把
dict_end = datetime(*end_time[:6])
换成
dict_end = end_time
这看起来有点傻,但也许你可以试试。我的理由是:datetime.strptime
会返回一个 datetime.datetime
对象。因为原来的代码说
dict_start = datetime(*start_time[:6])
看起来 dict_start
也应该是一个 datetime.datetime
对象,包含相同的6个字段(年、月、日、小时、分钟、秒)。所以试试
dict_start = start_time
如果这样不行,你可能需要给我们更多的代码,这样我们才能更好地猜测你的意图。
补充:获取单独字段(年、月、日、小时、分钟、秒)最简单的方法是使用点符号来访问属性。例如,
(start_time.year,start_time.month,start_time.day)
会返回一个包含年、月和日的三元组,都是整数。
另外,关于 datetime 对象的更多信息,可以查看 http://docs.python.org/library/datetime.html。里面可能有对你有用的例子。