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

使用Pydrive2调用谷歌服务账号上传触发Drive存储配额超限问题

问题根源

你遇到的问题核心是:服务账号拥有独立的Google Drive存储配额,脚本上传的内容归属服务账号,占用的是服务账号自身的配额(默认15GB),而非那个标准账号的配额。手动用标准账号上传时,内容归标准账号所有,消耗的是标准账号的存储空间,所以不会触发配额超限。

解决方法

1. 检查服务账号的存储使用情况

先确认服务账号的配额是否真的已满:

  • 通过Pydrive2调用API查询:
    from pydrive2.auth import GoogleAuth
    from pydrive2.drive import GoogleDrive
    
    gauth = GoogleAuth()
    gauth.ServiceAuth()
    drive = GoogleDrive(gauth)
    
    # 获取存储配额信息
    about = drive.GetAbout()
    print(f"已使用存储: {about['quotaBytesUsed']/1024/1024/1024:.2f} GB")
    print(f"总配额: {about['quotaBytesTotal']/1024/1024/1024:.2f} GB")
    
  • 或用gcloud CLI(需先配置服务账号密钥):
    gcloud auth activate-service-account --key-file=your-service-account-key.json
    gcloud drive storage quota list
    

2. 释放服务账号的存储配额

如果服务账号配额已满,先清理冗余内容:

  • 登录服务账号的Drive(通过Google Cloud控制台的服务账号页面,点击"登录到Drive"),删除无用文件/文件夹
  • 务必清空回收站,回收站中的内容同样占用存储配额

3. 让上传内容归属标准账号(彻底解决配额冲突)

如果希望上传的内容占用标准账号的配额,可在上传后修改文件所有者为标准账号:

from pydrive2.auth import GoogleAuth
from pydrive2.drive import GoogleDrive

gauth = GoogleAuth()
gauth.ServiceAuth()
drive = GoogleDrive(gauth)

# 上传文件到目标文件夹
target_folder_id = "你的目标文件夹ID"
file = drive.CreateFile({
    'title': "要上传的文件名",
    'parents': [{'id': target_folder_id}]
})
file.SetContentFile("本地文件路径")
file.Upload()

# 将标准账号设置为文件所有者
standard_account_email = "你的标准账号邮箱"
file.InsertPermission({
    'type': 'user',
    'value': standard_account_email,
    'role': 'owner'
})

# 可选:移除服务账号的所有者权限(避免后续误操作占用服务账号配额)
# service_account_email = "你的服务账号邮箱"
# file.DeletePermission(service_account_email)

修改所有者后,文件的存储配额会转移到标准账号下,后续服务账号上传的内容也不会再占用自身配额。

4. 升级服务账号的存储配额(长期方案)

如果必须让内容归服务账号所有且需要更大存储空间,可以给服务账号绑定Google Workspace或Google One付费套餐,提升存储上限。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 16:10:16