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

为什么python会将版本信息打印到stderr?,python,Python,为什么Guido(或其他人)决定将python--version打印到stderr而不是stdout?我只是好奇是什么用例使得标准错误比标准输出更合适。许多程序只会使用stdout,并不在意,但原则上我更喜欢stderr。简言之,我相信stdout是成功执行程序的产物,而stderr则是针对用户的任何消息。计算出的值会转到标准输出,而错误、堆栈跟踪、帮助、版本和用法消息是针对用户的,应该转到标准输出 我用这个问题来决定哪个输出流是合适的:这个消息是针对这个程序主要产品的消费者(无论是人类用户还是

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

许多程序只会使用
stdout
,并不在意,但原则上我更喜欢
stderr
。简言之,我相信stdout是成功执行程序的产物,而stderr则是针对用户的任何消息。计算出的值会转到标准输出,而错误、堆栈跟踪、帮助、版本和用法消息是针对用户的,应该转到标准输出

我用这个问题来决定哪个输出流是合适的:这个消息是针对这个程序主要产品的消费者(无论是人类用户还是其他程序或其他什么),还是严格针对这个程序的人类用户


另外,Java似乎也在版本消息中使用了stderr:

许多程序只会使用stdout,并不在意,但原则上我更喜欢stderr。简言之,我相信stdout是成功执行程序的产物,而stderr则是针对用户的任何消息。计算出的值会转到标准输出,而错误、堆栈跟踪、帮助、版本和用法消息是针对用户的,应该转到标准输出

我用这个问题来决定哪个输出流是合适的:这个消息是针对这个程序主要产品的消费者(无论是人类用户还是其他程序或其他什么),还是严格针对这个程序的人类用户


另外,Java似乎也将stderr用于版本消息:Python3.4被修改为输出到stdout,这是预期的行为。这被列为Python的一个bug,如下所示:。bug报告上的评论表明,虽然stdout是合理的选择,但它会破坏向后兼容性。Python2.7.9在很大程度上没有改变,因为太多人依赖它了


希望有帮助

Python3.4被修改为输出到
stdout
,这是预期的行为。这被列为Python的一个bug,如下所示:。bug报告上的评论表明,虽然stdout是合理的选择,但它会破坏向后兼容性。Python2.7.9在很大程度上没有改变,因为太多人依赖它了


希望有帮助

它将在python 3.4上打印到标准输出,在3.2.3中打印到标准输出。。。我们正在缩小范围!行为由更改,然后添加到3.4中。当初我把帮助交给斯特德了。它被认为是一种友好的方式,可以让您的输出通过管道传输到其他程序,同时在参数不正确时仍会转储帮助。消费者不必担心他们的扫描器/解析器被意外的文本弄乱。版本号也是有帮助的,所以它会转到stderr。它也是3.3中的stderr。它会打印到python3.4上的stdout,它在3.2.3中的stderr。。。我们正在缩小范围!行为由更改,然后添加到3.4中。当初我把帮助交给斯特德了。它被认为是一种友好的方式,可以让您的输出通过管道传输到其他程序,同时在参数不正确时仍会转储帮助。消费者不必担心他们的扫描器/解析器被意外的文本弄乱。版本号也是有帮助的,所以它是stderr。它也是3.3中的stderr。我想说的是,在
python的情况下--Version
版本字符串是“程序成功执行的产物”。感谢stdout和stderr@Aaron之间的有效区别。我要说的是,在
python--version
的情况下,版本字符串是“程序成功执行的产物”。感谢stdout和stderr@Aaron之间的有效区别。