代码之家  ›  专栏  ›  技术社区  ›  Johnny Metz

Python在循环期间打印到同一行

  •  1
  • Johnny Metz  · 技术社区  · 6 年前

    我有以下循环,它在每次迭代后打印一个周期:

    for i in range(3):
        time.sleep(1)
        print('.')
    

    这与预期完全一样:一个周期以1秒的增量打印到新行上的终端

    .  # after 1 seconds
    .  # after 2 seconds
    .  # after 3 seconds
    

    我想将输出更改为将句点打印到同一行(这样输出更紧凑,更易于阅读)。但是,当我将代码更改为以下内容时,我遇到了一个问题:

    for i in range(3):
        time.sleep(1)
        print('.', end='')
    

    在这种情况下,for循环完成时,单行周期仅一次打印所有周期:

    ...  # all after 3 seconds
    

    print 陈述

    2 回复  |  直到 6 年前
        1
  •  4
  •   John Gordon    6 年前

    默认情况下,在打印换行符之前不会显示终端输出。

    flush=True 到打印电话。

        2
  •  0
  •   quant    6 年前

    在这里,这将帮助您:

    import time
    
    for i in range(3):
        time.sleep(1)
        print(".", end="", flush=True)
    print("")
    

    编辑

    如果您使用的是python2,请确保添加

    from __future__ import print_function