为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

摇曳的蔷薇 2023-06-06 15:37:34
印刷品太多,我想擦掉一些临时印刷品。例如,我有:import timefor shard in range(3):    for i in range(100):        print("image_{} in shard_{}".format(i, shard))        time.sleep(1)而不是所有印刷品的列表image_0 in shard_0image_1 in shard_0image_2 in shard_0image_3 in shard_0我希望看到它们打印一次,然后被下一次打印所取代。image_0 in shard_0image_1 in shard_0image_2 in shard_0最后我只会有image_99 in shard_0image_99 in shard_1image_99 in shard_2屏幕上。我怎样才能做到这一点?
查看完整描述

3 回答

?
皈依舞

TA贡献1851条经验 获得超3个赞

我认为您误解了“刷新输出缓冲区”的含义。我不会删除以前打印的内容。它只是意味着“立即打印,无需等待整行(或文件价值)的输出。”


刷新可能很重要的一个例子是当你在一行中打印出几件事时,它们之间有一个延迟:


import time


for i in range(10):

    print(i, end="")

    time.sleep(1)

在许多控制台上,这将在 10 秒内不打印任何内容,然后您会0123456789立即看到所有内容。但是如果你添加flush=True到print通话中,你会看到每个号码分别出现,一个接一个,中间有一秒钟的延迟。你仍然0123456789在一条线上,但它是逐渐建立起来的。(请注意,某些 IDE 中内置的控制台可能不会以真实终端的正常方式进行行缓冲,因此您的里程可能会有所不同。真实控制台更加一致。)


如果您打印的是末尾带有换行符的整行(这是 的默认设置print),flush则没有必要使用 usually,因为大多数终端都是行缓冲的。这意味着它们会在每一行的末尾自动刷新自己,即使flush=True在输出后没有明确要求刷新。


查看完整回答
反对 回复 2023-06-06
?
慕标琳琳

TA贡献1830条经验 获得超9个赞

尝试这个:


import time

for shard in range(3):

    for i in range(100):

        print("image_{} in shard_{}\r".format(i,shard),end = "")

        time.sleep(1)

    print()


查看完整回答
反对 回复 2023-06-06
?
慕少森

TA贡献2019条经验 获得超9个赞

尝试:


for i in range(3):

    print("{}\r".format(i), end="")


print("Hello\r", end="")

print("World\r", end="")

输出将是World。


查看完整回答
反对 回复 2023-06-06
  • 3 回答
  • 0 关注
  • 160 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信