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

如何用Python访问Dropbox子文件夹文件并实现下载?

我来帮你解决这个问题!你现在已经能获取根目录的文件夹了,接下来要做的就是遍历子文件夹并识别下载文件,用Dropbox Python SDK其实很容易实现。我给你一步步拆解并附上完整代码:

第一步:完善目录条目获取(处理分页)

你原来的files_list_folder('')只获取了第一页内容,如果文件夹/文件数量较多会漏掉条目,所以先补充分页处理逻辑:

import dropbox

# 初始化dbx(假设你已完成授权,这里省略授权代码)
dbx = dropbox.Dropbox('你的访问令牌')

def get_all_entries(path):
    entries = []
    result = dbx.files_list_folder(path)
    entries.extend(result.entries)
    # 处理分页,拉取所有条目
    while result.has_more:
        result = dbx.files_list_folder_continue(result.cursor)
        entries.extend(result.entries)
    return entries

# 获取根目录所有条目
root_entries = get_all_entries('')
第二步:递归遍历文件夹并下载文件

写一个递归函数,自动识别当前路径下的文件夹/文件:遇到文件夹就深入遍历,遇到文件就下载到本地指定路径。

import os

def download_files_from_path(dbx, dropbox_path, local_save_path):
    # 确保本地保存目录存在,不存在则创建
    os.makedirs(local_save_path, exist_ok=True)
    
    # 获取当前Dropbox路径下的所有条目
    entries = get_all_entries(dropbox_path)
    
    for entry in entries:
        # 判断是否为文件夹,是则递归处理子文件夹
        if isinstance(entry, dropbox.files.FolderMetadata):
            sub_dropbox_path = entry.path_display
            sub_local_path = os.path.join(local_save_path, entry.name)
            download_files_from_path(dbx, sub_dropbox_path, sub_local_path)
        # 判断是否为文件,是则下载到本地
        elif isinstance(entry, dropbox.files.FileMetadata):
            local_file_path = os.path.join(local_save_path, entry.name)
            dbx.files_download_to_file(local_file_path, entry.path_display)
            print(f"已完成下载:{entry.name} -> {local_file_path}")
第三步:调用函数启动下载

比如你要下载根目录下名为"项目文档"的子文件夹内容,直接指定路径调用即可:

# Dropbox目标文件夹路径(注意以/开头)
target_dropbox_folder = "/项目文档"
# 本地保存的根路径
local_root = "./dropbox_downloads"

download_files_from_path(dbx, target_dropbox_folder, local_root)
关键细节说明
  • isinstance(entry, dropbox.files.FolderMetadata):这是区分文件夹和文件的核心判断,确保我们能正确遍历层级
  • files_download_to_file():直接将Dropbox文件下载到本地指定路径,比返回字节流的files_download()更适合直接存文件的场景
  • 分页处理:避免因条目数量超过API单次返回上限导致漏获取内容,这是很多开发者容易忽略的点
  • 本地目录自动创建:用os.makedirs(..., exist_ok=True)确保下载路径存在,不会因目录缺失报错

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:37:14