Я пытаюсь загрузить набор pd.DataFrames
в формате CSV в папку в Dropbox, используя Dropbox Python SDK (v2).Набор файлов не очень большой, но его много.Использование пакетов поможет сократить вызовы API и выполнить рекомендации разработчика, изложенные в документации :
. «Идея состоит в том, чтобы группировать одновременные загрузки файлов в пакеты, где файлы вкаждая партия загружается параллельно через несколько запросов API, чтобы максимизировать пропускную способность, но весь пакет фиксируется в одном асинхронном вызове API, что позволяет Dropbox максимально эффективно координировать получение и освобождение блокировок пространства имен для всех файлов в пакете."
После нескольких ответов в SO (см. Наиболее актуальную для моей проблемы здесь ) и этот ответ от сопровождающих SDK на форуме Dropbox Iпопробовал следующий код:
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
с path
и cursor объект с данными о сеансе.
Я довольно потерян в документации, и даже исходный код не так полезен, чтобы понять, как пакет работает для загрузки нескольких файлов (а не для загрузки тяжелых файлов).Что мне здесь не хватает?