Wie erstelle ich eine "Logdatei" ?

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
Col.Mars
User
Beiträge: 14
Registriert: Mittwoch 7. März 2018, 10:26

Schönen Guten Tag, ich habe ein Programm geschrieben mit welchem man grob gesagt Guthaben auf dafür vorgesehene Konten laden kann.
Hierbei wäre es ganz schön, wenn man nachvollziehen könnte, wie viel, wann und auf welches Konto Guthaben überwiesen wurde.
Mein Plan ist, dass mein Programm eben genannte Angaben in eine txt Datei einfügt und speichert.
Nur wie? :|

Vielen Dank schon mal :D
__deets__
User
Beiträge: 14539
Registriert: Mittwoch 14. Oktober 2015, 14:29

Oeffnen, schreiben, schliessen?

Im Ernst: viel mehr ist da so ohne weiteres zumindest nicht dran, du kannst das Python logging Modul dafuer verwenden, aber das ist eigentlich eher dafuer gedacht, logging fuer Entwicklungs und Debugging-Zwecke anzubieten. Einen "Papertrail" oder Transaktions-Log schreibt man besser selbst. Damit das nicht aus versehen wegkonfiguriert wird. Und dazu oeffnent, schreibt, schliesst man eine Datei. Oder benutzt eine Datenbank.
Benutzeravatar
__blackjack__
User
Beiträge: 13103
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Wenn man das irgendwann auch mal maschinell weiterverarbeiten möchte, würde es sich anbieten die Textdatei als CSV oder JSON-Lines zu formatieren.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
Col.Mars
User
Beiträge: 14
Registriert: Mittwoch 7. März 2018, 10:26

Ok vielen Dank soweit :D

Hab's jetzt folgendermaßen gelöst

Code: Alles auswählen

def logging():
    file = open("log.txt","a")
    if more:
        file.write(rfid + " " + name + " " + vorname + " " + "+" + guthaben + "€" + " " + time.strftime("am %d.%m.%Y um %H:%M Uhr") +"\n")
    else:
        file.write(rfid + " " + name + " " + vorname + " " + "-" + guthaben + "€" + " " + time.strftime("am %d.%m.%Y um %H:%M Uhr") +"\n")
Sirius3
User
Beiträge: 17749
Registriert: Sonntag 21. Oktober 2012, 17:20

Namen sollten nicht aus dem Nichts auftauchen. Alles was eine Funktion braucht, bekommt sie über ihre Argumente. Dateien müssen auch wieder geschlossen werden. Statt `more` wäre ein positiver oder negativer Wert für `guthaben` einfacher. Stringformatierung benutzen.

Code: Alles auswählen

def logging(rfid, name, vorname, guthaben):
    with open("log.txt", "a") as output:
        output.write("{0} {1} {2} {3:+.2f}€ am {4:%d.%m.%Y} um {4:%H:%M} Uhr\n".format(rfid, name, vorname, guthaben, datetime.datetime.now())
Antworten