我是在MacOSX上运行Python版本2.7.3。
考虑以下代码块:
from __future__ import print_function
import time
x = 0
while x < 5:
print(x)
x += 1
time.sleep(1)
如果我运行这个脚本,我会看到我期望的输出:数字0到4,每个数字后面都有一个换行符。此外,每个数字在等待一秒后才显示。
0
1
2
3
4
现在考虑这个代码块:
from __future__ import print_function
import time
x = 0
while x < 5:
print(x, end='')
x += 1
time.sleep(1)
输出结果符合预期,即
01234
而没有\n
,但时间顺序却出乎意料。进程不是每隔一秒就显示一个数字,而是等待四秒,然后显示所有五个数字。为什么在while循环中
print('string')
的行为与print('string', end='')
不同?有没有办法每秒显示一个字符而不带换行符?我尝试过sys.stdout.write(str(x))
,但它的表现和print(end='')
一样。
print(x, end='', flush=True)
也可以工作。 - evan54