我试图通过在同一行上每秒打印一个点来创建一个类似进度的东西。比如“钓鱼……”之类的。这是我用的:
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('.')
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)