2014-09-25 11 views
8

Dlaczego Guido (czy ktokolwiek inny) decyduje się wydrukować na drukarce stderr zamiast stdout? Po prostu ciekawy, jaki jest przypadek użycia, który sprawia, że ​​błąd standardowy jest bardziej odpowiedni niż standardowy.Dlaczego python wyświetla informacje o wersji na stderr?

+0

to drukuje na stdout na pythonie 3.4 –

+2

jego stderr w 3.2.3 ... zawężamy to! – tdelaney

+3

zachowanie zostało zmienione przez [tę poprawkę] (https://hg.python.org/cpython/rev/e6384b8b2325), a następnie zostało dodane do 3.4 [notki do wydania] (https://hg.python.org/cpython/ rev/fc089cf0cf32). oryginał [zgłoszenie błędu] (http://bugs.python.org/issue18338) –

Odpowiedz

10

Python 3.4 została zmodyfikowana tak, aby wyjście do stdout, co jest oczekiwane zachowanie. Jest to wymienione jako błąd w Pythonie: http://bugs.python.org/issue18338. Komentarze na temat raportu o błędzie wskazują, że podczas gdy stdout jest rozsądnym wyborem, złamałoby to kompatybilność wsteczną. Python 2.7.9 jest w dużej mierze niezmieniony, ponieważ tak wiele się na nim opiera.

Nadzieję, że pomaga!

1

Wiele programów po prostu użyłoby stdout i nie obchodziło, ale wolałbym stderr na zasadzie. Krótko mówiąc, uważam, że stdout jest wynikiem pomyślnego wykonania programu, podczas gdy stderr jest dla wszelkich wiadomości przeznaczonych dla użytkownika. Obliczone wartości idą do stdout, podczas gdy błędy, ślady stosu, pomoc, wersja i wiadomości o użytkowaniu są przeznaczone dla użytkownika i powinny przejść do stderr.

Używam tego pytania, aby zdecydować, który strumień wyjściowy jest odpowiedni: czy ta wiadomość przeznaczona jest dla konsumenta głównego produktu tego programu (czy jest to człowiek lub inny program lub coś w tym rodzaju), czy jest to wyłącznie dla człowieka użytkownik tego programu?

Również wygląda Java używa stderr komunikatów wersji, jak również przy okazji: Why does 'java -version' go to stderr?

+2

Powiedziałbym, że w przypadku 'python --version' ciąg znaków wersji jest" wynikiem pomyślnego wykonania programu ". – aaaarrgh

Powiązane problemy