![](/img/trans.png)
[英]Python: Why does `sys.exit(msg)` called from a thread not print `msg` to stderr?
[英]Why does python print version info to stderr?
為什么Guido(或其他人)決定將python --version
打印到stderr而不是stdout? 只是好奇用例是什么,它使標准錯誤比標准錯誤更合適。
Python 3.4已修改為輸出到stdout
,這是預期的行為。 此處將其列為Python的錯誤: http : //bugs.python.org/issue18338 。 錯誤報告中的注釋表明,盡管stdout
是合理的選擇,但它會破壞向后兼容性。 Python 2.7.9在很大程度上沒有變化,因為它非常依賴它。
希望有幫助!
許多程序只會使用stdout
而不在乎,但原則上我更喜歡stderr
。 簡而言之,我相信stdout
是程序成功執行的產物,而stderr
是針對用戶的任何消息。 計算的值發送到stdout
而錯誤,堆棧跟蹤,幫助, 版本和使用情況消息則是給用戶的,應該發送到stderr
。
我用這個問題來決定輸出哪種流是合適的:此消息是針對該程序的主要產品的消費者(無論是人類用戶還是其他程序或其他),還是僅針對該程序的人類用戶? ?
同樣,看起來Java也順便用了stderr作為版本消息: 為什么'java -version'進入stderr?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.