datetime.datetime.strptime在Python 2.4.1中不存在



我们的团队在某些情况下需要使用Python 2.4.1。strptime不存在于Python 2.4.1的datetime.datetime模块中:

Python 2.4.1 (#65, Mar 30 2005, 09:13:57) [MSC v.1310 32 bit (Intel)]
Type "help", "copyright", "credits" or "license" for more information.
>>> import datetime
>>> datetime.datetime.strptime
Traceback (most recent call last):
  File "<string>", line 1, in <fragment>
AttributeError: type object 'datetime.datetime' has no attribute 'strptime'

相对于2.6:

Python 2.6.6 (r266:84297, Aug 24 2010, 18:46:32) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import datetime
>>> datetime.datetime.strptime
<built-in method strptime of type object at 0x1E1EF898>

当我输入这个时,我在2.4.1的时间模块中找到了它:

Python 2.4.1 (#65, Mar 30 2005, 09:16:17) [MSC v.1310 32 bit (Intel)]
Type "help", "copyright", "credits" or "license" for more information.
>>> import time
>>> time.strptime
<built-in function strptime>

我认为strptime在某个点移动?检查这种事情的最好方法是什么?

注意strptime仍然在time模块中,即使是2.7.1,以及datetime

但是,如果您查看最新版本的datetime文档,您将在strptime下看到:

这相当于datetime(*(time.strptime(date_string, format)[0:6]))

所以你可以用那个表达式代替。请注意,同一条目还显示"新版2.5"。

我也遇到过类似的问题。

根据Daniel的回答,当你不确定脚本将在哪个Python版本(2.4 vs 2.6)下运行时,这适用于我:

from datetime import datetime
import time
if hasattr(datetime, 'strptime'):
    #python 2.6
    strptime = datetime.strptime
else:
    #python 2.4 equivalent
    strptime = lambda date_string, format: datetime(*(time.strptime(date_string, format)[0:6]))
print strptime("2011-08-28 13:10:00", '%Y-%m-%d %H:%M:%S')

fi

新方法通常记录在带有"News since version...."的库参考中。我不记得方法已经消失或被删除了……这将是一个向后兼容性问题。要移除的方法通常会通过DeprecationWarning被正式弃用。

相关内容

  • 没有找到相关文章

最新更新