datetime.datetime.today() ohne sek und milisek darstellen???

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Crady
User
Beiträge: 18
Registriert: Freitag 31. Oktober 2008, 18:58

Hallo, zusammen...

Na so (wie ich denke) einfache Fragen sind schon fast peinlich zu stellen - aber ich habe bei meiner Suche nichts passendes gefunden...

Ich möchte eine Log Datei schreiben, in der der jetzige Zeitpunkt gespeichert wird und zusätzlich der jetige Zeitpunkt + X Tage.

Die Berechnunge ist kein Problem. Aber leider stört mich die Darstellung der Zeitangabe mit Sekunden und Milisekunden :(

Wie kann ich das Format des jetzigen Zeitpunkts ändern? bzw. wenn ich es in einem String speichere kann brauche ich ja nur die letzten 10 Stellen zu löschen... Doch wie?

Eine weitere kurze Frage ist, ob es irgendwo eine Übersicht für Steuerzeichen in einem String gibt? Ich meine "\n" ist ja der Zeilenschalter ich würde aber einen Tabulator brauchen...

EDIT:

Habs gefunden:

http://de.wikibooks.org/wiki/Python-Pro ... konstrukte

Danke!
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Zeig doch mal den Code, um den es geht.
Wie machst du es und wie schreibst du es in die log-Datei?
Benutzeravatar
veers
User
Beiträge: 1219
Registriert: Mittwoch 28. Februar 2007, 20:01
Wohnort: Zürich (CH)
Kontaktdaten:

Code: Alles auswählen

In [1]: from datetime import datetime
In [2]: today = datetime.today()
In [3]: today.strftime("%Y-%m-%d %H:%M")
Out[3]: '2008-11-15 22:09'
:wink:
[url=http://29a.ch/]My Website - 29a.ch[/url]
"If privacy is outlawed, only outlaws will have privacy." - Phil Zimmermann
Crady
User
Beiträge: 18
Registriert: Freitag 31. Oktober 2008, 18:58

Vielen Dank!

Genau so klappt es:

Code: Alles auswählen

#Write logfile
def log():
  logfile = open('log.TXT', 'a')
  Action = '/test\t'
  UName = 'Test\t'  #lname.get()
  logfile.writelines(Action + UName + '\t' + Duration + '\t' + Time.strftime("%Y %m %d %H:%M") + '\t' + End.strftime("%Y %m %d %H:%M") + '\n')
  logfile.close()

Duration = int(raw_input('Days to add: '))
Time = datetime.datetime.today()
Add = datetime.timedelta(days=Duration)
print Time.strftime("%Y %m %d %H:%M")
End = Time + Add
print End.strftime("%Y %m %d %H:%M")
Duration = str(Duration)
log()
Mein nächstes Ziel ist es nun, dieses log File in einer permanenten Schleife auszulesen und den Eintrag zum Zeitpunkt des "End" Datums wieder zu löschen und in eine andere log Datei zu schreiben....

Mal sehen, wie wit ich komme!

Aber falls ich mich jetzt schon verrenne könnte Ihr mir vielleicht Tips geben, wie es sinnvoller zu gestalten wäre.

Danke, nochmals!
Benutzeravatar
str1442
User
Beiträge: 520
Registriert: Samstag 31. Mai 2008, 21:13

Es gibt ein "logging" Modul in der StdLib.

EDIT:

Warum benutzt du überhaupt Tabulatoren?

Und Funktionen sollten bis auf Konstanten alles was sie brauchen über Argumente erhalten. Diese Zusammensetzungen sehen auch unschön aus, ist aber wohl Testcode.
Crady
User
Beiträge: 18
Registriert: Freitag 31. Oktober 2008, 18:58

Hmmm... es gibt so viel, was ich noch lernen muss :shock:

Also mein Programm soll im Groben folgendes machen:

Es soll das bannen und unbannen von Usern auf Spieleservern etwas einfacher gestalten und automatisiert werden.

Hierzu benötige ich 3 Angaben: Name, bannen oder unbannen, wenn bannen dann wie lange. (wie ich an diese Daten komme weß ich noch nicht - GUI, Texteingabe, Über Webelement...)

Dann wird ein Eintrag ins log geschreiben und der Name entsprechend in die Banliste geschreiben bzw. gelöscht.

Nun ist es aber so, dass ich mehere Dateien brauche:

Bannliste: darf nur die Namen (jeweils einer pro Zeile) enthalten, da sie von einem anderen Programm weiterverarbeitet wird

Das log soll aber gleichzeitig auch auslesbar sein um es auf einer Webseite anzuzeigen (wird in PHP gemacht - habe ich aber nichts mit zu tun)

Nun soll aber auch dieses log file - ich denke das ist am einfachsten - permanent gescannt werden um Namen zu finden, deren Ban abgelauchen ist. Diese Namen sollen dann auf der Bannliste entfernt werden und und aus dem log in eine history datei geschreiben werden.

Damit es beim öffnen der log Datei "schön" aussieht habe ich die Tabs verwendet...

Allerdings bin ich am Zweifeln, ob ich nicht eine ganz andere Richtung einschlagen soll:

Ich könnte ja auch alles mit Pickel machen und dann die 3 Dateien nach jedem Schleifendurchlauf neu erstellen lassen. So wie ich das sehe wäre dann die Überprüfung ob ein Eintrag gelöscht werden soll leichter zu erledigen...

Aber nun werde ich mir aber erstmal die das 'logging' Modul ansehen...
Benutzeravatar
mkesper
User
Beiträge: 919
Registriert: Montag 20. November 2006, 15:48
Wohnort: formerly known as mkallas
Kontaktdaten:

Für die beschriebene Funktionalität solltest du die Logdatei jedenfalls ungepuffert öffnen.
Antworten