为什么 sys.stdout.flush() 不在同一行打印所有字符?
Why isn't sys.stdout.flush() printing all the characters on the same line?
这是我的代码:
wait = "..."
for char in wait:
sys.stdout.flush()
time.sleep(1)
print(char)
我正在尝试让它输出:
...
但它输出:
.
.
.
不明白为什么sys.stdout.flush没有效果
在print
中使用参数end=''
可以得到想要的结果:
试试这个:
import sys
import time
wait = "..."
for char in wait:
sys.stdout.flush()
time.sleep(1)
print(char, end='')
您可以阅读有关 end
参数的更多信息 here
std.out.flush()
只是将缓冲区中的内容写到屏幕上
默认情况下,print()
会在末尾添加一个\n
来写一个新行。您可以通过 print(s, end='')
将其关闭
如果您在 Python 解释器中键入 help(print)
,您将得到:
print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False)
Prints the values to a stream, or to sys.stdout by default.
Optional keyword arguments:
file: a file-like object (stream); defaults to the current sys.stdout.
sep: string inserted between values, default a space.
end: string appended after the last value, default a newline.
flush: whether to forcibly flush the stream.
使用此信息:
for char in wait:
time.sleep(1)
print(char, end='', flush=True)
试一试:
import sys
import time
wait = "..."
for char in wait:
time.sleep(1)
print(char, end="", file=sys.stdout, flush=True)
这是我的代码:
wait = "..."
for char in wait:
sys.stdout.flush()
time.sleep(1)
print(char)
我正在尝试让它输出:
...
但它输出:
.
.
.
不明白为什么sys.stdout.flush没有效果
在print
中使用参数end=''
可以得到想要的结果:
试试这个:
import sys
import time
wait = "..."
for char in wait:
sys.stdout.flush()
time.sleep(1)
print(char, end='')
您可以阅读有关 end
参数的更多信息 here
std.out.flush()
只是将缓冲区中的内容写到屏幕上
默认情况下,print()
会在末尾添加一个\n
来写一个新行。您可以通过 print(s, end='')
如果您在 Python 解释器中键入 help(print)
,您将得到:
print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False) Prints the values to a stream, or to sys.stdout by default. Optional keyword arguments: file: a file-like object (stream); defaults to the current sys.stdout. sep: string inserted between values, default a space. end: string appended after the last value, default a newline. flush: whether to forcibly flush the stream.
使用此信息:
for char in wait:
time.sleep(1)
print(char, end='', flush=True)
试一试:
import sys
import time
wait = "..."
for char in wait:
time.sleep(1)
print(char, end="", file=sys.stdout, flush=True)