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

如何解决Python调用Google Drive API导出链接下载文件损坏问题

问题分析与解决方案

可能的原因

  • 未处理API错误响应
    147字节的损坏文件基本是Google Drive API返回的JSON错误信息(比如权限不足、导出格式不支持、服务器临时过载),你直接把response.content写入文件,没做请求成功校验。不同时段不同文件出问题,大概率是API临时限流、导出服务负载波动导致部分请求随机失败。
  • 网络请求中断
    即使整体网络正常,单个请求可能因TCP连接断开、数据包丢失,只接收到截断的响应内容(刚好147字节的错误头)。不同时段网络链路稳定性变化,会影响不同文件的下载结果。
  • 导出服务临时故障
    Google Drive对复杂格式文件的导出(比如带复杂排版的Google Docs转docx),在服务器负载高时容易出现临时处理失败,这种故障是随机的,会导致不同时段失败的文件不同。

解决办法

  • 强制校验HTTP响应状态
    写入文件前先检查response.status_code是否为200,非成功状态时打印错误信息排查问题:

    response = requests.get(export_url, headers=headers)
    if response.status_code != 200:
        print(f"下载失败:状态码{response.status_code},错误内容:{response.text}")
        continue  # 跳过或重试
    with open(file_path, 'wb') as f:
        f.write(response.content)
    
  • 添加重试机制
    针对临时网络波动或API限流,用重试逻辑覆盖随机失败场景,同时用流式下载减少中断影响:

    import requests
    from tenacity import retry, stop_after_attempt, wait_exponential
    
    @retry(stop=stop_after_attempt(3), wait=wait_exponential(multiplier=1, min=2, max=10))
    def download_file(export_url, headers, file_path):
        response = requests.get(export_url, headers=headers, stream=True)
        response.raise_for_status()  # 主动抛出HTTP错误
        with open(file_path, 'wb') as f:
            for chunk in response.iter_content(chunk_size=8192):
                f.write(chunk)
        return True
    
  • 验证文件完整性
    下载后对比API返回的文件大小(通过Files.get接口获取size字段),不匹配则触发重试:

    import os
    
    # 先获取文件元信息
    file_info = drive_service.files().get(fileId=file_id).execute()
    expected_size = int(file_info.get('size', 0))
    
    # 下载后校验
    actual_size = os.path.getsize(file_path)
    if expected_size != 0 and actual_size != expected_size:
        print(f"文件损坏,预期{expected_size}字节,实际{actual_size}字节,重试")
        # 执行重试逻辑
    
  • 确认权限与导出格式
    确保API令牌拥有https://www.googleapis.com/auth/drive.readonly及以上权限,同时确认目标文件支持你指定的导出格式(比如Google Docs支持docx,但部分特殊文件可能不兼容)。请求失败时解析错误JSON,能快速定位权限或格式问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 22:57:26