Ich habe ein Python-Skript mit langer Laufzeit, das ich über die Befehlszeile ausführe. Das Skript schreibt Fortschrittsmeldungen und Ergebnisse in die Standardausgabe. Ich möchte alles, was das Skript schreibt, auf die Standardausgabe in einer Datei aufzeichnen, sehe es aber auch in der Befehlszeile. Alternativ möchte ich, dass die Ausgabe sofort in die Datei geht. Daher kann ich tail
verwenden, um den Fortschritt anzuzeigen. Ich habe es versucht:
Aber es produziert keine Ausgabe (nur das Ausführen des Skripts erzeugt die Ausgabe wie erwartet). Kann jemand eine einfache Lösung vorschlagen? Ich benutze Mac OS X 10.6.4.
Bearbeiten Ich verwende print
für die Ausgabe in meinem Skript.
Die Tatsache, dass Sie nichts sehen, hängt wahrscheinlich mit der Tatsache zusammen, dass eine Pufferung stattfindet. Sie erhalten also nur alle 4 Ko von Text oder so.
stattdessen versuchen Sie etwas wie folgt:
%Vor%Dann dekoriere sys.stdout mit dieser Klasse mit einem Code wie diesem:
%Vor% Auf diese Weise wird jede Ausgabe ( print
eingeschlossen) in die Standardausgabe und in die angegebene Datei geleert. Möglicherweise erfordern Optimierungen, weil ich diese Implementierung nicht getestet habe.
Natürlich sollten Sie beim Drucken von Nachrichten eine (meist geringe) Leistungseinbuße erwarten.
Tags und Links python command-line unix