【发布时间】:2020-07-14 12:17:58
【问题描述】:
我有代码:
import sys
import time
for i in range(10):
sys.stdout.write("\r Loading: {}".format(i))
sys.stdout.flush()
time.sleep(0.5)
当我运行python3 dynamic_print.py 时它工作得很好,但是当我通过输入python3 启动交互式解释器并将上面的代码复制并运行到其中时,我得到了输出:
Loading: 012
Loading: 112
Loading: 212
Loading: 312
Loading: 412
Loading: 512
Loading: 612
Loading: 712
Loading: 812
Loading: 912
最后两位数12,每次运行时都会更新(上次运行时是11)。为什么它的行为不同以及如何缓解这种情况?
【问题讨论】:
-
在交互模式下,表达式的结果(如果不是
None)会自动显示——文件(-like object)上.write()的返回值是字节数/字符数书面。因此,您正在编写的 12 个字符的字符串后跟一个“12”。print()没有这个问题,因为它返回 None。
标签: python stdout interactive-mode