【问题标题】:Flushing print() with end=''用 end='' 刷新 print()
【发布时间】:2022-06-13 21:01:34
【问题描述】:

我想在一行中打印单词(没有换行符),但是,打印命令似乎在打印单词后没有刷新。这意味着,我必须等到所有单词都写在屏幕上。示例:

list = ['a', 'b', 'c']
for x in list:
    print(x, ',', end='')
    # do the rest

输出是a , b , c,这是正确的,但正如我所说,它会立即将其打印在屏幕上。我想先看a,然后看b,然后看c,因为循环的其余部分很耗时,我想了解进度。我该如何解决?

【问题讨论】:

标签: python


【解决方案1】:

考虑到print() 默认写入标准输出,您可以刷新它:

# import sys

list = ['a', 'b', 'c']
for x in list:
    print(x, ',', end='')
    sys.stdout.flush()
    # do the rest

见:https://docs.python.org/3/library/functions.html#print

【讨论】:

    【解决方案2】:

    您可以使用可选的'flush' argument 刷新缓冲区。

    看起来像这样:

    list = ['a', 'b', 'c']
    for x in list:
        print(x, ',', end='', flush=True)
        # Do stuff
    

    【讨论】:

      猜你喜欢
      • 2018-08-11
      • 1970-01-01
      • 1970-01-01
      • 2022-01-21
      • 2021-04-08
      • 2020-07-28
      • 1970-01-01
      • 2022-12-02
      相关资源
      最近更新 更多