我试图通过在同一行上每秒打印一个点来创建类似进度的东西。像“钓鱼......”之类的东西。这是我使用的:
import time
print('Fishing', end='')
for i in range(5):
time.sleep(1)
print('.', end='')
但是它等待了 5 秒,然后立即打印了 Fishing.....
。但是当我不使用 end=''
时,它每秒打印点,但像这样在不同的行上打印点
Fishing.
.
.
.
.
我的问题:
- 为什么
print
会这样?
- 如何每秒打印一个点,但在同一行上?
- 为什么
print
会这样?
这与 print
关系不大,而与您的终端关系更大。出于性能原因,文本只会在每次出现换行符时“刷新”,而不是一次一个字符。
- 如何每秒打印一个点,但在同一行上?
每次打印时手动“刷新”标准输出:
import time
import sys
print('Fishing', end='')
sys.stdout.flush()
for i in range(5):
time.sleep(1)
print('.', end='', flush=True) # another way
如果你一直需要这个,你可以定义一个单独的冲洗打印函数:
from functools import partial
myprint = partial(print, end='', flush=True)
myprint('Fishing')
for i in range(5):
time.sleep(1)
myprint('.')