2010-03-11 14 views
8

Ich möchte einen Datetime-Wert in mein Python-Skript in der Befehlszeile übergeben. Meine erste Idee war, optparse zu verwenden und den Wert als String zu übergeben. Verwenden Sie dann datetime.strptime, um ihn in datetime zu konvertieren. Das funktioniert auf meinem Rechner (Python 2.6), aber ich muss dieses Skript auch auf Rechnern ausführen, auf denen python 2.4 läuft, das datetime.strptime nicht hat.datetime Befehlszeilenargument in Python 2.4

Wie kann ich den Datetime-Wert an das Skript in Python 2.4 übergeben?

Hier ist der Code, den ich in 2.6 bin mit:

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) 

Antwort

16

Go über das time-Modul, das bereits hatte strptime in 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

Das ist perfekt. Ich hatte time.strptime bemerkt, aber ich bin neu bei Python und wusste nicht, wie einfach es ist, die Zeit mit Slice-Notation in ein Datetime zu konvertieren. Danke! –

+0

@Ike, du bist willkommen! –

+1

In der Zwischenzeit wurde die Python-Bibliothek aktualisiert, sodass Sie keine Zeit mehr benötigen. Jetzt benutze einfach: datetime.datetime.strptime() –