Подтвердить что ты не робот

Datetime.datetime.strptime не присутствует в Python 2.4.1

Наша команда должна использовать Python 2.4.1 при определенных обстоятельствах. strptime отсутствует в модуле datetime.datetime в Python 2.4.1:

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 переместился в какой-то момент? Какой лучший способ проверить такие вещи. Я пробовал просматривать историю выпусков python, но ничего не нашел.

4b9b3361

Ответ 1

Обратите внимание, что strptime все еще находится в модуле time, даже в версии 2.7.1, а также в datetime.

Если, однако, вы посмотрите на документацию для datetime в последней версии, вы увидите это в strptime:

Это эквивалентно datetime(*(time.strptime(date_string, format)[0:6]))

чтобы вы могли использовать это выражение. Обратите внимание, что в той же записи также говорится "Новое в версии 2.5".

Ответ 2

У меня была аналогичная проблема.

Основываясь на ответе Даниэля, это работает для меня, когда вы не уверены, в какой версии Python (2.4 vs 2.6) будет запущен script:

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

Ответ 3

новые методы, как правило, документируются в справочной системе библиотеки "Новости с версии..." Я не могу вспомнить, что методы исчезли или были удалены... что было бы ошибкой обратной совместимости. Способы, подлежащие удалению, обычно являются официальными, устаревшими с помощью функции "Удержание".