Python Sleep进度条异常求助:调用sleeper(10)5秒后失效
解决等待进度条混乱的问题
你的进度条出现混乱的核心原因是sleeper函数中每次循环都会递减seconds参数,导致传入progress的total值持续变化,进度计算逻辑完全错误。比如初始seconds=10,第二次循环时seconds=9,此时count=2、total=9,计算出的百分比会超过20%,后续数值越来越偏离预期,最终导致进度条显示混乱。
修正后的代码
import sys import time def progress(count, total, suffix='waiting'): bar_len = 60 filled_len = int(round(bar_len * count / float(total))) percents = round(100.0 * count / float(total), 1) bar = '=' * filled_len + '-' * (bar_len - filled_len) sys.stdout.write('[%s] %s%s ...%s\r' % (bar, percents, '%', suffix)) sys.stdout.flush() def sleeper(seconds): # 保存原始总时长,避免循环中修改导致计算错误 total_seconds = seconds for i in range(seconds): progress(i+1, total_seconds) time.sleep(1)
关键修正点
- 移除
sleeper中的seconds -= 1语句,无需修改原始的总时长参数 - 提前保存
total_seconds作为固定的总进度值,确保每次调用progress时total都是初始的总秒数,进度计算逻辑保持一致
内容的提问来源于stack exchange,提问作者Akshay J
相关产品推荐
相关产品推荐

