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

Python实现GarminConnect下载ZIP直接解压并重命名保存FIT文件

解决方案

可以利用Python标准库的io.BytesIO和zipfile.ZipFile实现内存中直接解压ZIP内容,无需写入磁盘,同时完成文件重命名保存,这是最符合Python风格且高效的方式:

import io
import zipfile

activities = api.get_activities_by_date(
    start_date.isoformat(), end_date.isoformat(), 'other')

for activity in activities:
    activity_id = activity["activityId"]
    zip_data = api.download_activity(
        activity_id, dl_fmt=api.ActivityDownloadFormat.ORIGINAL
    )
    
    # 将ZIP数据加载到内存文件对象中
    with io.BytesIO(zip_data) as zip_buffer:
        with zipfile.ZipFile(zip_buffer, 'r') as zip_ref:
            # 快速定位ZIP中的.fit文件(兼容默认的activityId.fit及其他同名格式)
            fit_filename = next(name for name in zip_ref.namelist() if name.endswith('.fit'))
            # 读取fit文件的二进制内容
            fit_data = zip_ref.read(fit_filename)
            
            # 写入重命名后的目标fit文件
            output_fit_file = f"./{str(today)}.fit"
            with open(output_fit_file, "wb") as fb:
                fb.write(fit_data)

关键细节说明:

  • io.BytesIO:把下载的二进制ZIP数据包装成内存级文件对象,全程跳过磁盘IO,大幅提升处理速度
  • zipfile.ZipFile:直接操作内存中的ZIP对象,无需先保存ZIP到本地磁盘
  • 生成器表达式定位文件:用next(...)配合后缀匹配快速找到目标文件,写法简洁且高效
  • 上下文管理器:全程使用with语句自动管理资源,确保内存对象、文件句柄正确关闭,避免资源泄漏

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 11:22:39