为什么python将版本信息打印到stderr?

时间:2014-09-25 00:00:55

标签: python

为什么Guido(或其他任何人)决定将python --version打印到stderr而不是stdout?只是好奇用例是什么使得标准错误比标准错误更合适。

2 个答案:

答案 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?