Druck gegen Stderr
Gibt es bestimmte Vorteile oder Nachteile entweder print
oder stderr
?
InformationsquelleAutor der Frage Tyler | 2009-06-02
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gibt es bestimmte Vorteile oder Nachteile entweder print
oder stderr
?
InformationsquelleAutor der Frage Tyler | 2009-06-02
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es sind einfach zwei unterschiedliche Dinge.
print
geht in der Regel zusys.stdout
. Es lohnt sich zu wissen, der Unterschied zwischenstdin
stdout
undstderr
- Sie alle haben Ihren nutzen.Insbesondere
stdout
sollte verwendet werden, für die normale Ausgabe eines Programms, in der Erwägung, dassstderr
sollte reserviert werden, nur für Fehlermeldungen (anormale Programmausführung). Es gibt Dienstprogramme, die für die Spaltung dieser Bäche, die es Benutzern ermöglicht, von Ihrem code zu unterscheiden zwischen der normalen Ausgabe und-Fehler.InformationsquelleAutor der Antwort Daniel Lew
print
drucken auf eine Datei-wie-Objekt, einschließlichsys.stderr
.Die Vorteile der Verwendung von
sys.stderr
für Fehler stattsys.stdout
sind:sys.stderr
umgeleitet wird auf eine log-Datei gibt es weniger chance, dass das Programm Abstürzen kann, bevor der Fehler wurde protokolliert.Diese Antwort geschrieben mit Python 2 in den Sinn.
Für Python 3 verwenden Sie
print('Text', file=sys.stderr)
statt.InformationsquelleAutor der Antwort Bastien Léonard
Vorsichtig sein: es gibt einige Feinheiten, die hier, einschließlich der Frage, ob oder nicht die streams, die gehen, um interaktive Geräte. Die größte überraschung ist, dass in Python 3 stderr ist line buffered (zumindest unter Unix). Zum Beispiel, in einem terminal-Fenster, das folgende druckt eine Reihe alle zwei Sekunden in Python 2:
in der Erwägung, dass in Python 3, die folgenden druckt die zahlen alle zusammen, wenn die Schleife abgeschlossen ist:
InformationsquelleAutor der Antwort Mitchell Model
Ist es sinnvoll zu trennen stderr und stdout, wenn Sie Ihr Skript durch umleiten Sie auf verschiedene Dateien. Ich verwende in der Regel stderr für die log-Nachrichten und verfolgen Sie den Fluss des Programms, sondern verwenden stdout weitere nützliche Nachrichten, dass ich dabei bin, um Sie später zu verwenden.
Einer anderen Art und Weise zu schreiben auf stderr ist, wie im folgenden Beispiel:
InformationsquelleAutor der Antwort Vahid Mir