如何只显示 Python 3 中的最后一张打印件?
How can I show only the last print in 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
在屏幕上。
我怎样才能做到这一点?
尝试:
for i in range(3):
print("{}\r".format(i), end="")
print("Hello\r", end="")
print("World\r", end="")
输出将是 World
。
我认为您误解了“刷新输出缓冲区”的含义。我不会删除以前打印的内容。它只是意味着“立即打印,无需等待整行(或文件价值)的输出。”
刷新可能很重要的一个例子是当你在一行中打印出几件事时,它们之间有一个延迟:
import time
for i in range(10):
print(i, end="")
time.sleep(1)
在许多控制台上,这将在 10 秒内不打印任何内容,然后您会看到 0123456789
同时出现。但是,如果您将 flush=True
添加到 print
调用中,您会看到每个数字分别出现,一个接一个,中间有一秒钟的延迟。你仍然在一行中得到 0123456789
,但它会逐渐增加。 (请注意,某些 IDE 中内置的控制台可能不会以真实终端的正常方式进行行缓冲,因此您的里程可能会有所不同。真实控制台更加一致。)
如果你打印的整行末尾有一个换行符(print
的默认设置),通常不需要使用 flush
,因为大多数终端都是 line-buffered.这意味着它们会在每一行的末尾自动刷新自己,即使没有 flush=True
在其输出后明确要求刷新。
试试这个:
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()
印刷品太多,我想擦除一些临时印刷品。例如,我有:
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
在屏幕上。
我怎样才能做到这一点?
尝试:
for i in range(3):
print("{}\r".format(i), end="")
print("Hello\r", end="")
print("World\r", end="")
输出将是 World
。
我认为您误解了“刷新输出缓冲区”的含义。我不会删除以前打印的内容。它只是意味着“立即打印,无需等待整行(或文件价值)的输出。”
刷新可能很重要的一个例子是当你在一行中打印出几件事时,它们之间有一个延迟:
import time
for i in range(10):
print(i, end="")
time.sleep(1)
在许多控制台上,这将在 10 秒内不打印任何内容,然后您会看到 0123456789
同时出现。但是,如果您将 flush=True
添加到 print
调用中,您会看到每个数字分别出现,一个接一个,中间有一秒钟的延迟。你仍然在一行中得到 0123456789
,但它会逐渐增加。 (请注意,某些 IDE 中内置的控制台可能不会以真实终端的正常方式进行行缓冲,因此您的里程可能会有所不同。真实控制台更加一致。)
如果你打印的整行末尾有一个换行符(print
的默认设置),通常不需要使用 flush
,因为大多数终端都是 line-buffered.这意味着它们会在每一行的末尾自动刷新自己,即使没有 flush=True
在其输出后明确要求刷新。
试试这个:
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()