Hallo an euch alle,
ich habe mit dem print-Befehl verschiedene Ausgaben in Python ausgeben lassen.
Gibt es vielleicht eine Möglichkeit, nach dem Beenden des Programms die print-Ausgaben in einem Log-File zu speichern?
Vielen Dank bereits für eure Hilfe.
Erstellung eines Log-Files
@Melody: Man könnte sich eine Klasse schreiben die `sys.stdout` ersetzt und die Ausgaben zusätzlich in eine Datei schreibt. Wäre mir persönlich zu viel Magie. Entweder macht man so etwas explizit, oder nutzt die üblichen Werkzeuge die das für jedes Konsolenprogramm lösen. Also zum Beispiel ``tee`` unter Linux/Unix.
Ich habe das Problem folgendermaßen gelöst:
Der Inhalt der Datei würde dann folgendermaßen aussehen:
Wort1
Wort2
Alle Ausgaben habe ich also mit dem "print >> Datei,..." Befehl in die Datei geschrieben. Für mich war dies die leichteste Umsetzung.
Code: Alles auswählen
#Öffnen einer Datei mit dem Namen "Datei.txt" zum Schreiben
Datei=open(name="Datei.txt", mode='w')
#Ausgabe im Programm
print "Wort1"
print "Wort2"
#Umleitung der Ausgaben in die Datei "Datei.txt"
print >> Datei, "Wort1"
print >> Datei, "Wort2"
#Schließen der txt-Datei
Datei.close()
Wort1
Wort2
Alle Ausgaben habe ich also mit dem "print >> Datei,..." Befehl in die Datei geschrieben. Für mich war dies die leichteste Umsetzung.
@Melody: Alles doppelt ausgeben zu müssen halte ich ja nicht für eine „Lösung”. Das führt zu kopieren und einfügen mit leichten Änderungen, was letztendlich die Gefahr birgt, dass sich im Laufe der Programmentwicklung die beiden Varianten nicht mehr synchron bleiben wenn man Veränderungen vornimmt. Ausserdem verletzt es das DRY-Prinzip — Don't Repeat Yourself. Du hättest mindestens eine Funktion schreiben können die eine Zeichenkette sowohl ausgibt als auch in eine Datei schreibt. Oder halt `logging` verwenden, was genau für so etwas gedacht ist.
Das mit der Funktion ist mir überhaupt nicht eingefallen. Ich habe einmal eine erstellt.. könnte man diese noch eleganter erstellen?
Code: Alles auswählen
Datei=open(name="Datei.txt", mode='w')
def func(x):
print x
print >> Datei, x
#Testwerte für die Funktion
func("Hallo")
func(2)
func(55)
Datei.close()