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?
Odpowiedz
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!
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?
Powiedziałbym, że w przypadku 'python --version' ciąg znaków wersji jest" wynikiem pomyślnego wykonania programu ". – aaaarrgh
- 1. Jak sortować informacje o wersji
- 2. AssemblyInfo informacje o wersji gwiazdkami
- 3. maven build - informacje o wersji
- 4. Numer zestawu zmian na informacje o wersji z hostowanym TFS
- 5. Jak znaleźć informacje o funkcji w python?
- 6. Przekierowanie podprocesu stderr na stdout
- 7. iOS SKProduct Jak uzyskać informacje o bezpłatnej wersji próbnej IAP?
- 8. Jak uzyskać szczegółowe informacje o urządzeniu w wersji szybkiej
- 9. Dlaczego STDERR jest przekierowywany na STDOUT
- 10. Jak dołączyć informacje o wersji do pliku wynikowego instalacji?
- 11. Jak najlepiej przechowywać informacje o wersji Subversion w plikach EAR?
- 12. Jak automatycznie ustawić Informacje o wersji w Delphi?
- 13. Dlaczego sterowanie Spinner nadal wyświetla informacje o pytaniu, nawet jeśli zdarzenie setOnItemSelectedListener jest po sesetSelection?
- 14. Ustaw projekt Delphi 7 "Informacje o wersji" z kodu?
- 15. Korzystanie XmlUpdate aby ustawić informacje o wersji z zespołu
- 16. Dlaczego plik setup.exe nie wyświetla plików ARPCOMMENTS i WIXUIBanner.bmp, ale plik setup.msi wyświetla te informacje?
- 17. Informacje o oddziałach OCaml
- 18. Uzyskaj informacje o automatycznym obrocie na Androidzie
- 19. Wiarygodne informacje o różnych przeglądarkach na ContentEditable
- 20. Informacje o kontekstach Sharepoint na stronie HTML
- 21. Informacje o wyjątku: System.Reflection.TargetInvocationException
- 22. Uzyskaj informacje o strefie czasowej systemu w języku Python?
- 23. Informacje o procesie NODEJS
- 24. Python: Dlaczego `sys.exit (msg)` wywołane z wątku nie drukuje `msg` na stderr?
- 25. informacje o identyfikatorze procesu log4net
- 26. W python, czy mogę przekierować wyjście funkcji drukowania na stderr?
- 27. Dlaczego informacje o identyfikatorze openID nie są przekazywane przez protokół?
- 28. Dlaczego mój prosty program C wyświetla śmieci na standardowe wyjście?
- 29. Uzyskaj informacje o funkcjach dzwoniących w pythonie
- 30. Informacje o trybie androidowym "singleTask"
to drukuje na stdout na pythonie 3.4 –
jego stderr w 3.2.3 ... zawężamy to! – tdelaney
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) –