You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 04:09:22