2012-05-15 12 views
73

ist hier ein Funktionscode (Datei mit Erfolg erstellen)Wie erstellt man einen Dateinamen mit dem aktuellen Datum und der Uhrzeit in Python?

sys.stdout = open('filename1.xml', 'w') 

Jetzt

Ich versuche, die Datei mit dem aktuellen Datum Uhrzeit zu nennen (ich in Python kein Experte bin)
filename1 = datetime.now().strftime("%Y%m%d-%H%M%S") 
sys.stdout = open(filename1 + '.xml', 'w') 

Ich möchte einen Dateinamen mit genau dem Datum und der Uhrzeit schreiben, es ist eine XML-Datei, die das Programm bereits erstellt hat, ich muss nur die Datei benennen. Der obige Code funktioniert nicht.

[EDITED] - Der Fehler

File "./fix.py", line 226, in <module> 
    filenames = datetime.now().strftime("%Y%m%d-%H%M%S") 
AttributeError: 'module' object has no attribute 'now' 
+0

Sie brauchen ein '=' zwischen 'filename' und' datetime' –

+0

Anders als das, wie genau funktioniert der "obige Code nicht"? –

+0

Wenn eine Frage wie diese gestellt wird, ist "nicht arbeiten" nicht genug. Beschreibe genau, wie es scheitert. –

Antwort

160

zurück Während nicht datetime verwenden, löst dies das Problem (Ihre Frage beantwortet) eine Zeichenkette mit der aktuellen Uhrzeit und Datumsformat immer geben Sie:

import time 
timestr = time.strftime("%Y%m%d-%H%M%S") 
print timestr 

ergibt:

20120515-155045 

, sodass Ihr Dateiname diese Zeichenfolge anhängen oder verwenden kann.

+1

Gotcha! Zeit war nicht in meinem Skript definiert und ich habe versucht, Timedate (nicht arbeiten, ich weiß nicht warum), aber mit der Zeit ist es jetzt klar, der Dateiname ist mit Erfolg erstellt. Ich danke dir sehr! – B4NZ41

+2

Ich weiß nicht, warum Sie diese Antwort akzeptiert haben, wenn es zwei Antworten gibt, die genau erklären, was mit dem Code in der Frage falsch war. Nichts gegen die Art, wie Levon das gemacht hat, es funktioniert gut, aber wenn du sagst "nicht funktionieren, ich weiß nicht warum", erscheint es seltsam, weil du Antworten hast, die erklären warum. –

+0

Wenn ich den obigen Code ausprobierte, erhielt ich ein, "E AttributError: 'int' Objekt hat kein Attribut 'strftime'" Fehler. – rwbyrd

26

now ist eine Klassenmethode in der Klasse datetime im Modul datetime. Sie müssen also

datetime.datetime.now() 

Oder können Sie einen anderen importieren

from datetime import datetime 

Fertig verwenden diese Weise können Sie datetime.now gemäß dem Code in der Frage verwenden.

+0

Danke für die Rückkehr! – B4NZ41

+0

+1 für den alternativen Import, was ich auch geschrieben hätte. –

14

Ändern Sie diese Zeile

filename1 = datetime.now().strftime("%Y%m%d-%H%M%S") 

Um

filename1 = datetime.datetime.now().strftime("%Y%m%d-%H%M%S") 

Beachten Sie die zusätzliche datetime. Alternativ ändern Sie Ihre import datetime-from datetime import datetime

+1

Danke, ich benutze nur die Zeit. – B4NZ41

+1

@ B4NZ41 Das stimmt nicht. Die Fehlermeldung macht deutlich, dass Ihr Code irgendwo 'Datetime importieren' hat. –

+0

;) Entschuldigung! JETZT benutze ich die Importzeit, bevor ich import datetime verwendete – B4NZ41

3

Ich bin überrascht, dass es nicht einige einzelne Formatierer, die einen Standard (und sicher) gibt ‚für in Dateinamen anhängt‘ - Format der Zeit konnte Wir einfach FD.write('mybackup'+time.strftime('%(formatter here)') + 'ext' schreiben

"%x" instead of "%Y%m%d-%H%M%S" 
+0

Stimme völlig zu. Sehr überraschend, dass man nicht existiert. Wir müssen etwas verpassen. – Shaun

Verwandte Themen