Python stdout和stderr异常

Python stdout和stderr异常,python,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.x中,文件对象的write方法返回写入的字节数,并且交互式提示

从交互式提示中:

>>> 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.x中,文件对象的
write
方法返回写入的字节数,并且交互式提示打印出您正在运行的任何内容的返回值。因此,您打印出的
“是”
(6字节),然后解释器打印出6(从写入返回)。对于3.1


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

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

试试

>>>三,


发生了什么?

这发生在Python3上,而不是Python2上

Mike是正确的,Python3中的write返回写入的字节数,然后由交互式shell打印


Python2中的write返回None,因此未打印任何内容

请不要将其收回。在我使用python 3.1.2的机器上,行为是相同的。python3.x中file对象的
write()
确实返回写入的字节数。。。如果OP将写操作的返回值赋给一个伪变量,虚假输出将消失。@Adrien:谢谢你指出这一点!我已经改正了。