为什么Guido(或其他任何人)决定将python --version
打印到stderr而不是stdout?只是好奇用例是什么使得标准错误比标准错误更合适。
答案 0 :(得分:14)
Python 3.4被修改为输出到stdout
,这是预期的行为。这在此处列为Python的错误:http://bugs.python.org/issue18338。对错误报告的评论表明虽然stdout
是合理的选择,但它会破坏向后兼容性。 Python 2.7.9基本没有变化,因为它依赖于它。
希望有所帮助!
答案 1 :(得分:2)
许多程序只使用stdout
而不在乎,但原则上我更希望stderr
。简而言之,我认为stdout
是成功执行程序的产物,而stderr
是针对用户的任何消息。计算值转到stdout
,而错误,堆栈跟踪,帮助,版本和用法消息是针对用户的,应该转到stderr
。
我使用这个问题来决定哪个输出流是合适的:这个消息是针对该程序主要产品的消费者(无论是人类用户还是其他程序或其他)或者是否严格针对人类用户这个节目?
此外,看起来Java也使用stderr作为版本消息:Why does 'java -version' go to stderr?