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

如何通过Google Drive API及Python SDK获取账号文件与目录总数?

用Google Drive Python SDK统计文件与目录总数

嘿,我来帮你搞定这个需求!下面是一步步的实现方案,亲测可行:

1. 前期准备

首先得把依赖和授权配置弄妥当:

  • 安装必要的Python库:
    pip install google-api-python-client oauth2client
    
  • 去Google Cloud Console创建一个新项目,启用Google Drive API,然后下载OAuth 2.0客户端凭据(JSON格式),把它保存为credentials.json放在你的项目目录里。

2. 完整实现代码

直接上可运行的代码,里面加了详细注释,你可以直接复用:

from googleapiclient.discovery import build
from oauth2client.file import Storage
from oauth2client.client import OAuth2WebServerFlow
from oauth2client.tools import run_flow

# 定义授权范围,只读权限就足够完成统计需求
SCOPES = ['https://www.googleapis.com/auth/drive.readonly']
CLIENT_SECRET_FILE = 'credentials.json'
APPLICATION_NAME = 'Drive File Counter'

def get_authenticated_service():
    storage = Storage('drive-auth.json')
    credentials = storage.get()
    if not credentials or credentials.invalid:
        # 从credentials.json里提取你的客户端ID和密钥
        flow = OAuth2WebServerFlow(CLIENT_ID='你的客户端ID', CLIENT_SECRET='你的客户端密钥',
                                   scope=SCOPES, redirect_uri='urn:ietf:wg:oauth:2.0:oob')
        # 本地运行时会弹出浏览器让你完成授权,授权后会生成drive-auth.json缓存凭据
        credentials = run_flow(flow, storage)
    return build('drive', 'v3', credentials=credentials)

def count_files_and_folders(service):
    file_count = 0
    folder_count = 0
    page_token = None

    # 循环处理分页结果,Drive API默认一次返回1000条,超过数量必须分页获取
    while True:
        # q参数过滤掉已删除到回收站的文件,确保统计准确
        results = service.files().list(
            q="trashed = false",
            fields="nextPageToken, files(id, mimeType)",
            pageToken=page_token,
            pageSize=1000  # 每次请求拉取最大数量,提升效率
        ).execute()

        items = results.get('files', [])
        for item in items:
            # 通过MIME类型区分文件夹和普通文件
            if item['mimeType'] == 'application/vnd.google-apps.folder':
                folder_count += 1
            else:
                file_count += 1

        page_token = results.get('nextPageToken')
        if not page_token:
            break

    return file_count, folder_count

if __name__ == '__main__':
    service = get_authenticated_service()
    total_files, total_folders = count_files_and_folders(service)
    print(f"账号内总文件数:{total_files}")
    print(f"账号内总目录数:{total_folders}")

3. 关键细节说明

  • 授权缓存:第一次运行会弹出浏览器让你登录Google账号授权,授权成功后会生成drive-auth.json,后续运行无需重复授权。
  • 过滤规则:q="trashed = false"确保只统计未删除的文件,默认会包含所有你有权限访问的共享文件;如果只想统计自己创建的文件,可以把q参数改成q="trashed = false and 'me' in owners"。
  • 分页逻辑:因为Drive API单请求最多返回1000条数据,必须通过nextPageToken循环遍历所有结果,否则会漏掉大量文件。
  • 类型区分:Google Drive的文件夹专属MIME类型是application/vnd.google-apps.folder,其余类型(包括Google Docs、Sheet等云端文档)都归为“文件”统计。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 06:55:16