#python #dropbox-api
#python #dropbox-api
Вопрос:
Как я могу использовать объект Python Dropbox для создания новой папки в корневом каталоге, а затем заполнить эту папку данными?
Как я могу создать метод на Python для отправки данных в определенную папку в приложении Dropbox? Когда я запускаю приведенный ниже код:
def ship_data_to_dbx(job_id, mn):
# ship db and zip and txt to dir for the machine name in dropbox
mn = mn.upper()
# specific db path for the machine
dbx_path = "/" mn "/"
db_path = os.path.join(app.root_path, 'static/log_files', job_id ".db")
with open(db_path, "rb") as f:
dbx.files_upload(f.read(), dbx_path, mute=True)
Я получаю это сообщение об ошибке:
dropbox.exceptions.ApiError: ApiError('8e663db4b9ae4d00b954f97065393160', UploadError('path', UploadWriteFailed(reason=WriteError('malformed_path', None), upload_session_id='AAAAAAAAAoBUOebujJCC_A')))
Спасибо!
Ответ №1:
Чтобы создать новую папку через Dropbox API, используя официальный Dropbox API v2 Python SDK, вы должны использовать files_create_folder_v2
метод.
Чтобы загрузить файл, вы можете использовать files_upload
метод.
malformed_path
Ошибка, которую вы получаете при попытке сделать это, указывает на то, что path
значение, которое вы предоставляете files_upload
, в данном случае ваша dbx_path
переменная, не соответствует ожидаемому формату.
В частности, хотя точное значение не отображается, похоже, проблема в том, что ваше dbx_path
значение имеет завершающий символ «/», который не ожидается. При указании path
для загрузки в Dropbox вы должны указать полный желаемый путь, включая любые родительские компоненты path, а также имя файла, а также расширение (если таковое имеется).
Итак, например, если ваша mn
переменная содержит имя файла, которое вы хотите, чтобы у загруженного файла было, эта строка должна быть:
dbx_path = "/" mn
Или, если mn
это родительская папка, она будет выглядеть примерно так, filename
содержащая имя и расширение файла:
dbx_path = "/" mn "/" filename