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在输出后没有明确要求刷新。

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()

TA贡献2019条经验 获得超9个赞
尝试:
for i in range(3):
print("{}\r".format(i), end="")
print("Hello\r", end="")
print("World\r", end="")
输出将是World。
添加回答
举报