Ich habe ein Python-Skript erstellt, das über eine Endlosschleife mit einem Webserver kommuniziert. Ich möchte alle Kommunikationsdaten in einer Datei protokollieren und gleichzeitig vom Terminal aus überwachen. Also habe ich den Tee-Befehl so benutzt.
python client.py | tee logfile
Ich habe jedoch nichts vom Terminal oder der Protokolldatei erhalten. Das Python-Skript funktioniert einwandfrei. was passiert hier? vermisse ich etwas
Einige Ratschläge wären willkommen. Vielen Dank im Voraus.
sys.stdout.flush()
Sie bei jeder Protokollierung einer Zeile ein explizites Skript ausführen.Antworten:
Von
man python
:Was Sie also tun können, ist:
Oder mit
tee
:quelle
script
, die auch die Pufferung deaktiviert und zusätzlich Steuersequenzen (C-a
, Cursortasten usw.) zum Funktionieren bringt : stackoverflow.com/a/39269661/15690 .tee
wird wie eine Pipe gesehen (was es ist) und nicht wie der Hybrid: Es schreibt in die Konsole. Hinweis: Das Verhalten kann auch in einem Python-Programm gesteuert werden.python -u client.py | tee >> logfile
würde nicht funktionieren. Dies>>
würde einen weiteren Fall von gepuffertem Schreiben in eine Datei einführen. Dastee -a
löst.