Windows CMD 在打印行末尾添加一个随机数 sys.stdout of python
Windows CMD adds a random number at the end of the printed line with sys.stdout of python
我在 Windows 10、64 位操作系统的控制台中写了一个简单的 sys.stdout.write
语句。
Microsoft Windows [Version 10.0.17134.590]
(c) 2018 Microsoft Corporation. All rights reserved.
C:\Users\user>python
Python 3.7.2 (tags/v3.7.2:9a3ffc0492, Dec 23 2018, 23:09:28) [MSC v.1916 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.stdout.write('x')
x1
>>> sys.stdout.write('try')
try3
>>> sys.stdout.write('fooo')
fooo4
安装的 Python 版本是 3.7.2
。
数字不是随机的;它是写入的字符数。因为您处于 Python 交互中,所以也会打印语句的 return 值。 sys.stdout.write
(或一般写入文件)returns 写入的字符数。
因此,当您执行类似 sys.stdout.write('fooo')
的操作时,它首先打印 fooo
,然后打印 return 值 (4
)。
sys.stdout.write
可以这样模拟:
def mywrite(s):
print(s, end='')
return len(s)
在互动中:
>>> def mywrite(s):
... print(s, end='')
... return len(s)
...
>>> mywrite('x')
x1
>>> mywrite('try')
try3
>>> mywrite('fooo')
fooo4
REPL 将始终打印调用函数的 return 值(在您的情况下写入 STDOUT 的字符数),如果您不捕获它的话。如果您不想打印它,您可以随时使用临时变量将 return 值存储在 temporary/throaway 变量中:
>>> _ = sys.stdout.write('foobar\n')
foobar
>>>
注意最后添加的新行 - 这是因为它不会自动添加,所以如果没有它,您的下一个 REPL 提示将在 foobar
而不是新行之后开始。
或者,您知道,您可以只使用 print()
函数,在其默认设置中,该函数将执行几乎相同的操作,而不必直接处理 STDOUT 流。
我在 Windows 10、64 位操作系统的控制台中写了一个简单的 sys.stdout.write
语句。
Microsoft Windows [Version 10.0.17134.590]
(c) 2018 Microsoft Corporation. All rights reserved.
C:\Users\user>python
Python 3.7.2 (tags/v3.7.2:9a3ffc0492, Dec 23 2018, 23:09:28) [MSC v.1916 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.stdout.write('x')
x1
>>> sys.stdout.write('try')
try3
>>> sys.stdout.write('fooo')
fooo4
安装的 Python 版本是 3.7.2
。
数字不是随机的;它是写入的字符数。因为您处于 Python 交互中,所以也会打印语句的 return 值。 sys.stdout.write
(或一般写入文件)returns 写入的字符数。
因此,当您执行类似 sys.stdout.write('fooo')
的操作时,它首先打印 fooo
,然后打印 return 值 (4
)。
sys.stdout.write
可以这样模拟:
def mywrite(s):
print(s, end='')
return len(s)
在互动中:
>>> def mywrite(s):
... print(s, end='')
... return len(s)
...
>>> mywrite('x')
x1
>>> mywrite('try')
try3
>>> mywrite('fooo')
fooo4
REPL 将始终打印调用函数的 return 值(在您的情况下写入 STDOUT 的字符数),如果您不捕获它的话。如果您不想打印它,您可以随时使用临时变量将 return 值存储在 temporary/throaway 变量中:
>>> _ = sys.stdout.write('foobar\n')
foobar
>>>
注意最后添加的新行 - 这是因为它不会自动添加,所以如果没有它,您的下一个 REPL 提示将在 foobar
而不是新行之后开始。
或者,您知道,您可以只使用 print()
函数,在其默认设置中,该函数将执行几乎相同的操作,而不必直接处理 STDOUT 流。