Python编写加载进度条时字符一次性全部打印问题求助
Python进度条打印异常问题排查
问题根因
Python标准输出默认采用行缓冲策略,你在调用print()时指定了end = ""没有输出换行符,打印的内容会暂时存放在输出缓冲区中,不会立刻输出到终端。只有当程序运行结束、缓冲区被占满或者手动触发刷新时,才会把所有缓存的内容一次性打印出来,这就是你看到程序先等待几十秒再一次性输出全部-的原因。
修复方案
有两种常用的修复方式,均可实现每2秒打印一个-的预期效果:
- 方案1:在
print参数中添加flush=True,强制每次打印后立刻刷新缓冲区
调整后代码如下:import time for i in range(20): print ("-", end = "", flush=True) time.sleep(2) - 方案2:每次打印完成后手动调用
sys.stdout.flush()刷新输出缓冲区
调整后代码如下:import time import sys for i in range(20): print ("-", end = "") sys.stdout.flush() time.sleep(2)
内容的提问来源于stack exchange,提问作者eleven5
相关产品推荐
相关产品推荐

