如何修改Python wget模块的bar_adaptive函数以MB显示文件大小?
自定义wget模块进度条以MB为单位显示文件大小
需求说明
期望下载进度条以MB为单位展示文件大小,输出格式如下:
45.0% [......................... ] 41.63 / 92.1 MB替代默认的字节数显示:
45% [....................... ] 43647584 / 96570345当前使用方式:
# 'download_link' 为文件下载链接 # 'output' 为文件保存路径 wget.download(url=download_link, out=output, bar=wget.bar_adaptive)
解决方案
通过实现自定义进度条函数,替换原wget.bar_adaptive,核心是将字节数转换为MB单位,并调整显示格式。
自定义进度条代码
import wget def bar_adaptive_mb(current, total, width=80): if total is None: # 总大小未知时,使用原温度计式进度条 wget.bar_thermometer(current, width=width) else: # 字节转MB(1MB = 1024*1024字节) current_mb = current / (1024 * 1024) total_mb = total / (1024 * 1024) # 计算百分比并保留1位小数 percent = (current / total) * 100 # 计算进度条填充长度 bar_length = int(width * current // total) bar = "[" + "." * bar_length + " " * (width - bar_length) + "]" # 格式化输出,确保格式对齐 print(f"\r{percent:.1f}% {bar} {current_mb:.2f} / {total_mb:.1f} MB", end="") # 使用自定义进度条函数 wget.download(url=download_link, out=output, bar=bar_adaptive_mb)
代码说明
- 单位转换:将已下载字节数
current和总字节数total除以1024*1024,转换为MB单位 - 格式调整:百分比保留1位小数,已下载大小保留2位小数,总大小保留1位小数,完全匹配期望输出格式
- 兼容场景:当文件总大小无法提前获取时,自动调用原
bar_thermometer函数,保持功能完整性 - 进度条逻辑:延续原
bar_adaptive的进度条长度计算方式,保证进度展示的准确性
内容的提问来源于stack exchange,提问作者kamran mt21
相关产品推荐
相关产品推荐

