python - 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
,以及一个带有会话数据的游标对象.
我在文档中迷失了方向,即使是源代码也不能帮助理解批处理如何上传多个文件(而不是作为上传大量文件的案例)。我在这里缺少什么?
解决方案
推荐阅读
- elasticsearch - 使用 curl 命令将 JSON 数据发布到弹性搜索
- bash - 按文件大小对 grep 的输出进行排序?(重击)
- java - Junit for Files 谷歌云存储服务
- javascript - express.static() 不从不是“/”的路由器路径中的公用文件夹中提供文件
- javascript - AJAX ON RAILS - 删除后无法更新书签符号,错误 500
- android - Android Kotlin - 意外标记(使用 ';' 分隔同一行上的表达式)
- listview - Flutter Container 高度不继承自 ListView 子项
- java - 应用程序关闭时尝试获取 mainApp 中的文本字段的文本时出现 java.lang.NullPointerException
- elixir - 剥离/检查的惯用方法:ok 和管道第二个 arg
- node.js - 护照不叫