【发布时间】:2018-07-04 08:07:13
【问题描述】:
在 Jupyter Notebook 中,运行以下 Python 代码时,会一个接一个地打印 2 到 9 的数字。 进口时间
for i in range(1,10):
time.sleep(1)
sys.stderr.write('\r %d' % i)
sys.stderr.flush()
Q1:为什么没有打印1?
Q2:为什么一个接一个地打印数字,我的意思是,当打印一个较大的数字时,紧邻的较小数字会消失(这很棒)? 为什么sys.stderr.write('\r %d' % i)有效以这种方式,但sys.stderr.write('%d \r' % i) 以“正常”方式工作,显示所有数字?
在 Linux 终端中运行上述代码时。输出又不一样了:
13
23
33
43
53
63
73
83
93
如果我将sys.stderr.write('\r %d' % i) 行更改为sys.stderr.write('%d \r' % i),则输出变为:
3
3
3
3
3
3
3
3
3
这太奇怪了。
Q3:为什么在Linux终端运行上述代码会有不同的输出?
【问题讨论】:
-
我刚刚在 jupyter-notebook 中使用 Python3 内核尝试了您的代码,实际上 1 已打印出来。
-
@timgeb 好的,你是对的。我正在使用集成在 PyCharm 中的 Jupyter Notebook,可能有问题。我刚刚在基于网络的 Jupyter Notebook 上尝试了代码,它确实输出了 1。我将排除第一个问题。
标签: python string terminal jupyter-notebook jupyter