猿问

如何在 Python 3 中只显示最后一次打印?

印刷品太多,我想擦掉一些临时印刷品。例如,我有:


import time

for shard in range(3):

    for i in range(100):

        print("image_{} in shard_{}".format(i, shard))

        time.sleep(1)


而不是所有印刷品的列表


image_0 in shard_0

image_1 in shard_0

image_2 in shard_0

image_3 in shard_0

我希望看到它们打印一次,然后被下一次打印所取代。


image_0 in shard_0

image_1 in shard_0

image_2 in shard_0

最后我只会有


image_99 in shard_0

image_99 in shard_1

image_99 in shard_2

屏幕上。


我怎样才能做到这一点?


摇曳的蔷薇
浏览 161回答 3
3回答

皈依舞

我认为您误解了“刷新输出缓冲区”的含义。我不会删除以前打印的内容。它只是意味着“立即打印,无需等待整行(或文件价值)的输出。”刷新可能很重要的一个例子是当你在一行中打印出几件事时,它们之间有一个延迟:import timefor i in range(10):    print(i, end="")    time.sleep(1)在许多控制台上,这将在 10 秒内不打印任何内容,然后您会0123456789立即看到所有内容。但是如果你添加flush=True到print通话中,你会看到每个号码分别出现,一个接一个,中间有一秒钟的延迟。你仍然0123456789在一条线上,但它是逐渐建立起来的。(请注意,某些 IDE 中内置的控制台可能不会以真实终端的正常方式进行行缓冲,因此您的里程可能会有所不同。真实控制台更加一致。)如果您打印的是末尾带有换行符的整行(这是 的默认设置print),flush则没有必要使用 usually,因为大多数终端都是行缓冲的。这意味着它们会在每一行的末尾自动刷新自己,即使flush=True在输出后没有明确要求刷新。

慕标琳琳

尝试这个:import timefor shard in range(3):    for i in range(100):        print("image_{} in shard_{}\r".format(i,shard),end = "")        time.sleep(1)    print()

慕少森

尝试:for i in range(3):    print("{}\r".format(i), end="")print("Hello\r", end="")print("World\r", end="")输出将是World。
随时随地看视频慕课网APP

相关分类

Python
我要回答