【问题标题】:Flush output in for loop in Jupyter notebook在 Jupyter 笔记本的 for 循环中刷新输出
【发布时间】:2017-08-26 06:45:03
【问题描述】:

我想在 Jupyter 笔记本上的迭代中打印出 i 并将其刷新。在下一次迭代之后,我将打印下一个i。我尝试了 questionthis question 的解决方案,但是,它只是打印出 0123...9 而不为我刷新输出。这是我的工作代码:

import sys
import time

for i in range(10):
    sys.stdout.write(str(i)) # or print(i, flush=True) ?
    time.sleep(0.5)
    sys.stdout.flush()

这些是我的设置:ipython 5.1、python 3.6。也许,我在之前的解决方案中遗漏了一些东西?

【问题讨论】:

    标签: python jupyter-notebook flush


    【解决方案1】:
    #Try this:
    import sys
    import time
    
    for i in range (10):  
        sys.stdout.write('\r'+str(i))
        time.sleep(0.5)
    

    '\r' 将打印在行首

    【讨论】:

    • 谢谢!这个解决方案对我有用。似乎我们根本不需要刷新输出。
    【解决方案2】:

    第一个答案是正确的,但您不需要sys 包。您可以使用print 函数的end 参数。它指定最后要打印的内容,其默认值为\n(newline) (docs1, docs2)。 请改用\r(回车)。

    import time
    
    for i in range (10):  
        print(i, end="\r")
        time.sleep(0.5) # This line is to see if it's working or not
    

    【讨论】:

    • 感谢@Alperen!这个其实很方便!
    【解决方案3】:

    试试这个

    for i in range (10):  
        print("\r", end=str(i))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-04-14
      • 1970-01-01
      • 2022-08-07
      • 2019-11-01
      • 2020-06-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多