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

如何使用Python基于Google Drive API实现下载速度实时展示

Python调用Google Drive API显示实时下载速度的修改方案

核心实现逻辑:通过记录两次下载分片的时间差、对应下载的字节差,计算单位时间的下载量得到实时速度,仅需用到Python标准库time,无需额外安装第三方依赖。

具体修改步骤

  • 代码开头新增导入time模块
  • 进入下载循环前初始化时间、已下载字节的统计变量
  • 每次下载完一个分片后计算当前速度,将速度字段加入输出内容
  • 修正原有代码的两处逻辑问题:一是下载完成会错误打印下载取消的提示,二是每次循环都重复写入整个文件导致效率极低
import time # 新增导入

def download_file(id):
    fileStats=file_info(id)
    # 显示文件基础信息
    print("----------------------------")
    print("FileName: ",fileStats['name'])
    total_size = int(fileStats['size']) # 提前存储总大小,避免重复类型转换
    print("FileSize: ",convert_size(total_size))
    print("----------------------------")

    request = service.files().get_media(fileId=id)
    fh = io.BytesIO()
    downloader = MediaIoBaseDownload(fh, request, chunksize=1048576)
    done = False
    # 新增速度统计相关变量
    last_timestamp = time.time()
    last_downloaded = 0
    current_speed = 0

    while not done:
        status, done = downloader.next_chunk()
        current_downloaded = int(status.progress() * total_size)
        # 计算实时速度
        time_diff = time.time() - last_timestamp
        if time_diff > 0:
            current_speed = (current_downloaded - last_downloaded) / time_diff
        # 更新统计值,供下一次计算使用
        last_timestamp = time.time()
        last_downloaded = current_downloaded

        # 输出信息新增速度字段,颜色可根据自己的需求调整
        ui_update('{1:<10}\t{2:<10}\t{3:<10}\t{0}'.format(
            fileStats['name'],
            color(convert_size(total_size), Colors.orange),
            color(f'{round(status.progress()*100,2)}%', Colors.green),
            color(f'{convert_size(int(current_speed))}/s', Colors.blue)
        ))

    # 下载完成后统一写文件,避免重复写入降低效率
    fh.seek(0)
    with open(os.path.join(location, fileStats['name']), 'wb') as f:
        f.write(fh.read())
    print(f"文件 {fileStats['name']} 下载完成!")

如果你的convert_size函数暂不支持整数以外的输入,也可以手动转换速度单位:显示MB/s可以改成f'{round(current_speed/1048576, 2)} MB/s',显示KB/s就除以1024即可。

内容的提问来源于stack exchange,提问作者blank

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 18:27:03