2010-03-11 8 views
8

Je veux passer une valeur datetime dans mon script python sur la ligne de commande. Ma première idée était d'utiliser optparse et de passer la valeur en chaîne, puis d'utiliser datetime.strptime pour la convertir en datetime. Cela fonctionne très bien sur ma machine (python 2.6), mais j'ai aussi besoin d'exécuter ce script sur des machines qui exécutent python 2.4, qui n'a pas datetime.strptime.argument de ligne de commande datetime en python 2.4

Comment puis-je transmettre la valeur datetime au script dans python 2.4?

Voici le code que je utilise 2.6:

parser = optparse.OptionParser() 
parser.add_option("-m", "--max_timestamp", dest="max_timestamp", 
        help="only aggregate items older than MAX_TIMESTAMP", 
        metavar="MAX_TIMESTAMP(YYYY-MM-DD HH24:MM)") 
options,args = parser.parse_args() 
if options.max_timestamp: 
    # Try parsing the date argument 
    try: 
     max_timestamp = datetime.datetime.strptime(options.max_timestamp, "%Y-%m-%d %H:%M") 
    except: 
     print "Error parsing date input:",sys.exc_info() 
     sys.exit(1) 

Répondre

16

Go par l'intermédiaire du module time, qui a déjà fait ont strptime 2.4:

>>> import time 
>>> t = time.strptime("2010-02-02 7:31", "%Y-%m-%d %H:%M") 
>>> t 
(2010, 2, 2, 7, 31, 0, 1, 33, -1) 
>>> import datetime 
>>> datetime.datetime(*t[:6]) 
datetime.datetime(2010, 2, 2, 7, 31) 
+0

C'est parfait. J'avais remarqué time.strptime mais je suis nouveau sur python et je n'ai pas réalisé à quel point il est facile de convertir l'heure en datetime en utilisant la notation de tranche. Merci! –

+0

@Ike, vous êtes les bienvenus! –

+1

En attendant, la bibliothèque python a été mise à jour pour que vous n'ayez pas besoin de temps. Maintenant, il suffit d'utiliser: datetime.datetime.strptime() –

Questions connexes