如何通过脚本或工具批量获取Dropbox文件版本历史?
批量导出Dropbox文件历史版本的解决方案
核心方案:使用Dropbox官方Python SDK
Dropbox API确实支持获取文件历史版本并批量下载,以下是具体实现步骤:
1. 前期准备
- 登录Dropbox开发者平台,创建一个Scoped App
- 为应用添加以下权限:
files.content.read、files.metadata.read - 生成并复制你的访问令牌(如果是校园团队账户,需联系管理员确认应用权限已获批)
- 安装Dropbox Python SDK:
pip install dropbox
2. 批量下载代码实现
import dropbox from datetime import datetime import time # 替换为你的访问令牌和目标文件路径 ACCESS_TOKEN = '你的Dropbox访问令牌' TARGET_FILE_PATH = '/path/to/your/target/file' # 比如 '/data/metrics.csv' # 初始化Dropbox客户端 dbx = dropbox.Dropbox(ACCESS_TOKEN) # 批量获取所有版本历史(处理分页) all_versions = [] pagination_cursor = None while True: if pagination_cursor: revision_result = dbx.files_list_revisions_continue(pagination_cursor) else: # 每次请求最多返回100条版本,可根据需求调整 revision_result = dbx.files_list_revisions(TARGET_FILE_PATH, limit=100) all_versions.extend(revision_result.entries) if not revision_result.has_more: break pagination_cursor = revision_result.cursor time.sleep(0.5) # 避免触发API速率限制 # 批量下载每个版本 file_name_base = TARGET_FILE_PATH.split('/')[-1].split('.')[0] file_ext = TARGET_FILE_PATH.split('.')[-1] for index, version in enumerate(all_versions): # 用时间戳和版本ID生成唯一文件名,防止覆盖 modified_timestamp = version.server_modified.strftime('%Y%m%d_%H%M%S') save_file_name = f"{file_name_base}_{modified_timestamp}_{version.rev}.{file_ext}" try: # 根据版本ID下载对应文件 _, file_response = dbx.files_download(TARGET_FILE_PATH, rev=version.rev) with open(save_file_name, 'wb') as f: f.write(file_response.content) print(f"完成下载: {index+1}/{len(all_versions)} - {save_file_name}") except Exception as e: print(f"下载失败(版本ID: {version.rev}): {str(e)}") time.sleep(0.5)
3. 关键说明
files_list_revisions是获取文件版本历史的核心API,支持分页处理大量版本数据files_download方法通过指定rev参数,可直接下载对应版本的文件- 文件名用修改时间+版本ID命名,确保每个版本的文件唯一
- 添加短暂延迟避免触发Dropbox API的速率限制
内容的提问来源于stack exchange,提问作者Mengyang Cao
相关产品推荐
相关产品推荐

