Textdatei zeilenweise schreiben
Verfasst: Donnerstag 16. April 2015, 12:20
Hallo zusammen,
ich habe nochmal eine Frage: Mein Skript funkioniert soweit sehr gut, nun möchte ich allerdings, dass meine Konsole auch in eine log.txt ausgegeben wird. Das klappt, jedoch muss ich das Skript beenden, damit die Daten geschrieben werden. Ich möchte es gerne "Live" schreiben - wie in der Konsole zu sehen ist.
f.close()* wird schonmal nicht aufgerufen, dass ist noch eine kleine Baustelle, aber was für mich wichtiger ist, ist die Ausgabe in die log-Datei nach jedem stdout.write.
Wie kann ich das bewerkstelligen? Jedesmal schließen und wieder öffnen fühlt sich erstmal nicht effizient an - da muss es doch noch einen anderen weg geben?
Edit: * = da das Skript entweder selbst durch einen neustart den PCs brachial beendet wird oder es schlicht und ergreifend Monate durch läuft.
ich habe nochmal eine Frage: Mein Skript funkioniert soweit sehr gut, nun möchte ich allerdings, dass meine Konsole auch in eine log.txt ausgegeben wird. Das klappt, jedoch muss ich das Skript beenden, damit die Daten geschrieben werden. Ich möchte es gerne "Live" schreiben - wie in der Konsole zu sehen ist.
Code: Alles auswählen
class Tee(object):
def __init__(self, *files):
self.files = files
def write(self, obj):
for f in self.files:
f.write(obj)
original_stdout = sys.stdout
f = open("log.txt","a")
sys.stdout = Tee(sys.stdout, f)
while True:
sys.stdout.write("Warte 10 sekunden...")
time.sleep(10)
f.close()
Wie kann ich das bewerkstelligen? Jedesmal schließen und wieder öffnen fühlt sich erstmal nicht effizient an - da muss es doch noch einen anderen weg geben?
Edit: * = da das Skript entweder selbst durch einen neustart den PCs brachial beendet wird oder es schlicht und ergreifend Monate durch läuft.