2011-04-07 2 views
11

Notre équipe doit utiliser Python 2.4.1 dans certaines circonstances. strptime n'est pas présent dans le module datetime.datetime en Python 2.4.1:datetime.datetime.strptime non présent dans 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' 

Contrairement à 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> 

Tout en tapant ça, je l'ai trouvé dans le module de temps 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> 

Je suppose que strptime déplacé à un certain point? Quelle est la meilleure façon de vérifier des choses comme ça. J'ai essayé de parcourir l'historique des versions de python mais je n'ai rien trouvé.

Répondre

18

Notez que strptime est toujours dans le module time, même à partir de 2.7.1, ainsi que dans datetime.

Toutefois, si vous regardez la documentation for datetime dans une version plus récente, vous verrez cela sous strptime:

Cela équivaut à datetime(*(time.strptime(date_string, format)[0:6]))

vous pouvez donc utiliser cette expression à la place. Notez que la même entrée indique également "Nouveau dans la version 2.5".

+0

Cela explique tout - Je pensais avoir vérifié la documentation pour voir si elle mentionnait quand cela a été présenté, mais j'ai clairement manqué cela. Merci! – Nathan

1

Les nouvelles méthodes sont généralement documentées dans la référence de la bibliothèque avec "Nouvelles depuis la version ...." Je ne me souviens pas que les méthodes ont disparu ou ont été supprimées ... ce qui serait une faute de compatibilité ascendante. Les méthodes sujettes à suppression sont généralement obsolètes avec un DeprecationWarning.

11

J'ai eu un problème similaire aussi.

Sur la base de la réponse de Daniel, cela fonctionne pour moi quand vous n'êtes pas sûr dans quelle version Python (2.4 vs 2.6), le script est en cours d'exécution:

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

Questions connexes