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

Python 3.8通过Dropbox API批量下载共享文件夹的实现方法

解决Dropbox共享文件夹批量下载指定路径内容的方案

一、遍历共享文件夹数据定位目标路径

你已经通过sharing/list_folders获取到嵌套结构的共享文件夹数据,核心是通过递归遍历匹配path_lower字段来找到目标路径:

递归遍历匹配函数示例

def find_target_folder(folders_data, target_path):
    # 统一路径格式:转小写+去除首尾斜杠,避免格式差异导致匹配失败
    standard_target = target_path.lower().strip('/')
    for entry in folders_data.get('entries', []):
        current_path = entry.get('path_lower', '').strip('/')
        # 完全匹配目标路径则返回该文件夹条目
        if current_path == standard_target:
            return entry
        # 当前条目是文件夹且包含子内容时,递归查找
        if entry.get('.tag') == 'folder' and 'entries' in entry:
            matched = find_target_folder(entry, target_path)
            if matched:
                return matched
    return None

二、下载目标路径下所有内容为压缩包

找到目标文件夹后,直接调用Dropbox的files/download_zip接口,一键打包下载整个路径下的所有子文件夹和文件:

下载实现代码示例

import dropbox

# 初始化Dropbox客户端
dbx = dropbox.Dropbox(api_token)

def download_folder_as_zip(target_folder, local_save_path):
    folder_full_path = target_folder.get('path_lower')
    if not folder_full_path:
        raise ValueError("目标文件夹路径无效")
    
    # 调用接口下载压缩包并写入本地文件
    with open(local_save_path, 'wb') as zip_file:
        metadata, response = dbx.files_download_zip(folder_full_path)
        zip_file.write(response.content)
    print(f"压缩包已保存至: {local_save_path}")

# 使用示例
target_folder = find_target_folder(your_shared_folders_data, '/eric/iphone/Messages')
if target_folder:
    download_folder_as_zip(target_folder, 'messages_backup.zip')
else:
    print("未找到指定路径的共享文件夹")

三、批量场景注意事项

  • 分页处理:sharing/list_folders默认最多返回1000条条目,若共享文件夹数量过千,需用返回的cursor参数调用sharing/list_folders/continue获取剩余数据
  • 速率限制:Dropbox有API请求频率限制,批量操作时可添加time.sleep(1)这类延时避免触发限制
  • 权限检查:确保你的Dropbox应用已申请sharing.read和files.content.write权限,否则会出现权限错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 21:42:03