首页 > 解决方案 > Dropbox Python API 上传多个文件

问题描述

我正在尝试pd.DataFrames使用 Dropbox Python SDK (v2) 将一组 CSV 文件上传到 Dropbox 中的文件夹。文件集不是特别大,但数量很多。使用批处理将有助于减少 API 调用并遵守文档中概述的开发人员建议:

“我们的想法是将并发文件上传分组,每个批次中的文件通过多个 API 请求并行上传,以最大限度地提高吞吐量,但整个批次在单个异步 API 调用中提交,以允许 Dropbox 协调采集和尽可能有效地释放批处理中所有文件的命名空间锁。”

遵循 SO 中的几个答案(请参阅此处与我的问题最相关的答案),以及来自 Dropbox 论坛中 SDK 维护人员的这个答案,我尝试了以下代码:

commit_info = []
for df in list_pandas_df: 
    df_raw_str = df.to_csv(index=False)
    upload_session = dbx.upload_session_start(df_raw_str.encode())
    commit_info.append(
            dbx.files.CommitInfo(path=/path/to/db/folder.csv
    )

dbx.files_upload_finish_batch(commit_info)

尽管如此,在阅读files_upload_finish_batch文档字符串时,我注意到该函数只接受一个列表CommitInfo作为参数(文档),这令人困惑,因为非批处理版本(files_upload_session_finish)确实接受了一个CommitInfo带有 a 的对象path,以及一个带有会话数据的游标对象.

我在文档中迷失了方向,即使是源代码也不能帮助理解批处理如何上传多个文件(而不是作为上传大量文件的案例)。我在这里缺少什么?

标签: pythondropbox-apidropbox-sdk

解决方案


推荐阅读