【问题标题】:How to print counter using flush in Jupyter notebook?如何在 Jupyter notebook 中使用flush打印计数器?
【发布时间】:2019-06-18 16:25:24
【问题描述】:

以下代码曾经在 Python 2.7 中工作,但在 Python 3.7 jupyter notebook 中似乎不工作。

import sys
import time
for i in range(100):
    sys.stdout.write(str(i))
    sys.stdout.flush()
    time.sleep(1)

Python:3.7.3 Jupyter-Lab:0.35.4

我不想打印所有数字,而是清除并再次打印。

【问题讨论】:

  • 您能否更具体地了解“似乎不起作用”?我没有看到 Python 3.7.2 和 Jupyter 4.4.0 有任何问题
  • 在python 2.7中,它只是打印数字,清除它并用下一个数字替换数字,直到循环结束。但在 Python 3.7 中,它会打印所有数字而不清除之前的数字。
  • 我在 Python 3.7 和 Python 2.7 中都遇到了相同的不良行为。这可能是由于 Jupyter Notebook 的变化。你用的是什么版本?我正在使用 Jupyter Notebook 5.7.4。
  • 两年前我在 Python 2.7 中使用这段代码时不记得 jupyter 版本了。我目前使用的是 Jupyter-lab 而不是 jupyter notebook,但它没有任何区别,因为我在 jupyter notebook 中尝试并获得了相同的结果。不过,有没有其他方法可以实现预期的行为。

标签: python jupyter-notebook counter


【解决方案1】:

这似乎在 Python 2.7 和 3.7 内核中都实现了所需的行为。 '\r' 是必需的。我试过'\n' 并在新行上打印一个数字。

import sys
import time

for i in range (100):  
    sys.stdout.write(f"\r{str(i)}")
    time.sleep(1)

【讨论】:

    猜你喜欢
    • 2017-02-28
    • 1970-01-01
    • 2020-05-19
    • 1970-01-01
    • 1970-01-01
    • 2018-09-28
    • 2019-02-27
    • 1970-01-01
    • 2018-11-12
    相关资源
    最近更新 更多