Python 'datetime.datetime' 对象不可下标访问

1 投票
6 回答
7374 浏览
提问于 2025-04-15 20:35

首先,我不是一个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 个回答

1

这不是导入的问题。是 *start_time[:6] 和 *end_time[:6] 让Python不喜欢。把它换掉就行。

2

看起来你只是想要时间,对吧?datetime.strptime这个方法会返回一个'datetime'对象,因此下面这些属性就包含了时间的信息:datetime.day(天)、datetime.hour(小时)、datetime.year(年)等等。

1

罗伯特,试着把

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。里面可能有对你有用的例子。

撰写回答