Warum druckt Python Versionsinformationen zu stderr?

8

Warum hat sich Guido (oder wer auch immer) dafür entschieden, python --version print auf stderr anstatt stdout zu setzen? Ich bin nur neugierig, was der Anwendungsfall ist, der den Standardfehler angemessener macht als den Standardfehler.

    
kalefranz 25.09.2014, 00:00
quelle

2 Antworten

10

Python 3.4 wurde geändert, um es in stdout auszugeben, was das erwartete Verhalten ist. Dies wird hier als Fehler mit Python aufgeführt: Ссылка . Die Kommentare zum Fehlerbericht weisen darauf hin, dass stdout zwar die vernünftige Wahl ist, aber die Abwärtskompatibilität beeinträchtigt. Python 2.7.9 ist weitgehend unverändert, weil so vieles darauf beruht.

Hoffe das hilft!

    
Sessamekesh 30.07.2015, 04:05
quelle
1

Viele Programme würden einfach stdout verwenden und es wäre egal, aber ich würde grundsätzlich stderr bevorzugen. Kurz gesagt, stdout ist für das Produkt der erfolgreichen Ausführung eines Programms, stderr für alle Nachrichten, die für den Benutzer gedacht sind. Berechnete Werte gehen zu stdout , während Fehler, Stack-Traces, Hilfe, Version und Verwendungsnachrichten für den Benutzer gedacht sind und zu stderr gehen sollten.

Ich benutze diese Frage, um zu entscheiden, welcher Stream passend ist: Ist diese Nachricht für den Verbraucher des Hauptprodukts dieses Programms gedacht (ob das der menschliche Benutzer oder ein anderes Programm oder was auch immer ist) oder ist es ausschließlich für den menschlichen Benutzer von diesem Programm?

Sieht auch so aus, dass Java stderr auch für Versionsnachrichten verwendet: Warum geht 'java -version' an stderr?

    
Aaron A 25.09.2014 01:44
quelle

Tags und Links