我正在尝试使用Dropbox Python SDK(v2)将一组pd.DataFrames
作为CSV格式上传到Dropbox中的文件夹。文件集不是特别大,但是数量很多。使用批处理将有助于减少API调用,并符合documentation中概述的开发人员建议:
”该想法是将并发文件上传分组,其中文件 通过多个API请求将每个批次中的并行上传到 最大程度地提高吞吐量,但整个批次都可以一次提交, 异步API调用,以允许Dropbox协调采集 并为该批处理中的所有文件释放名称空间锁 尽可能高效。”
在SO中有几个答案(请参阅与我的问题here最相关),以及在Dropbox论坛中SDK维护者的this答案中,我尝试了以下代码:
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
的列表作为参数(documentation),由于非批处理版本( files_upload_session_finish
确实接受了带有CommitInfo
的{{1}}对象和带有会话数据的游标对象。
我完全迷失在文档中,甚至源代码对了解批处理如何上传多个文件(而不是上传繁重的文件)的帮助也不大。我在这里想念的是什么?