Beim Versuch, die Standardausgabe von einem Python-Skript in eine Textdatei ( python script.py > log
) zu schreiben , wird die Textdatei beim Starten des Befehls erstellt, der eigentliche Inhalt wird jedoch erst nach Abschluss des Python-Skripts geschrieben. Zum Beispiel:
script.py:
import time
for i in range(10):
print('bla')
time.sleep(5)
druckt alle 5 Sekunden auf stdout, wenn mit aufgerufen wird python script.py
, aber wenn ich aufrufe python script.py > log
, bleibt die Größe der Protokolldatei Null, bis das Skript beendet ist. Ist es möglich, direkt in die Protokolldatei zu schreiben, sodass Sie den Fortschritt des Skripts verfolgen können (z. B. mithilfe von tail
)?
EDIT Es stellt sich heraus, dass python -u script.py
dies der Trick ist, ich wusste nichts über das Puffern von stdout.