stdout和stderr异常

时间:2010-06-07 12:48:57

标签: python

来自互动提示:

>>> import sys
>>> sys.stdout.write('is the')
is the6

那里的'6'在做什么?

另一个例子:

>>> for i in range(3):
...     sys.stderr.write('new black')
... 
9
9
9
new blacknew blacknew black

这些数字来自哪里?

3 个答案:

答案 0 :(得分:2)

在3.x中,文件对象的write方法返回写入的字节数,交互式提示符会打印出正在运行的任何内容的返回值。因此,您打印出'is the'(6个字节),然后解释器打印出6(写入的返回)。 3.1 See the relevant docs

这不会发生在3.0之前,因为write方法返回None,因此没有打印任何内容。

答案 1 :(得分:0)

它们是来自write的返回值,由交互式shell打印。

试试

>>> 3

会发生什么?

答案 2 :(得分:0)

这在Python3上发生,但不在Python2上发生。

Mike认为Python3中的写入返回了写入的字节数,然后由交互式shell打印。

Python2中的写入返回None,因此没有打印