2011-04-07 17 views
11

Nuestro equipo debe usar Python 2.4.1 en ciertas circunstancias. strptime no está presente en el módulo datetime.datetime en Python 2.4.1:datetime.datetime.strptime no presente en 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' 

A diferencia de 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> 

Al escribir esto, me encontré en el módulo de tiempo de 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> 

Puedo considerar que strptime se trasladaron en algún momento? ¿Cuál es la mejor manera de verificar cosas como esta? Intenté consultar el historial de lanzamientos de Python pero no pude encontrar nada.

Respuesta

18

Tenga en cuenta que strptime se encuentra todavía en el módulo time, incluso a partir de 2.7.1, así como en datetime.

Sin embargo, si nos fijamos en la documentation for datetime en una versión reciente, se verá esto bajo strptime:

Esto es equivalente a datetime(*(time.strptime(date_string, format)[0:6]))

esta manera puede utilizar esa expresión en su lugar. Tenga en cuenta que la misma entrada también dice "Nuevo en la versión 2.5".

+0

Eso explica todo - Pensé que había revisado la documentación para ver si mencionaba cuándo se presentó esto, pero claramente me lo perdí. ¡Gracias! – Nathan

1

Los nuevos métodos se documentan generalmente en la referencia de la biblioteca con "Noticias desde la versión ...." No recuerdo que los métodos hayan desaparecido o se hayan eliminado ... lo cual sería una falta de compatibilidad con versiones anteriores. Los métodos sujetos a remoción generalmente son oficiales obsoletos con una advertencia de depreciación.

11

Tuve un problema similar también.

Sobre la base de la respuesta de Daniel, esto funciona para mí cuando no está seguro de qué versión bajo (2,4 frente a 2,6) la secuencia de comandos de Python va a correr:

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

Cuestiones relacionadas