Python Dropbox-如何在Dropbox中创建目录并上传到该新文件夹?

问题描述

如何使用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')))

谢谢!

解决方法

要使用the official Dropbox API v2 Python SDK通过Dropbox API创建新文件夹,应使用the files_create_folder_v2 method

要上传文件,可以使用the files_upload method

尝试进行此操作时遇到的malformed_path错误表明您要提供给path的{​​{1}}值,在这种情况下,就是您的files_upload变量,不是预期的格式。

尤其是,虽然没有显示确切的值,但问题似乎在于您的dbx_path值带有尾随的“ /”,这是不期望的。在Dropbox中指定要上传到的dbx_path时,您应该包括所需的完整路径,包括任何父路径组件,文件名以及扩展名(如果有)。

例如,如果您的path变量包含您希望上传的文件具有的文件名,则该行应改为:

mn

或者,如果dbx_path = "/" + mn 是父文件夹,它将看起来像这样,其中mn包含文件的名称和扩展名:

filename