[编辑]

这个问题已经回答,我不接受任何新的答案。

[结束编辑]

注意:在不同的编程语言中都存在类似的问题,但是它们没有专门针对Python的dropbox库(或者至少我找不到能解决此问题的库),这就是为什么创建此问题的原因。

我想知道如何使用Python 2.7中的dropbox库将文件上传到我的Dropbox并读回文件。

我已经成功连接到我的Dropbox,并且Dropbox对象称为db。

如果有人知道该怎么做,请写一个包含方法调用和参数的答案,或者如果这是一个重复的问题,请用链接发表评论。

先感谢您!

最佳答案

Dropbox Python SDK同时提供API v1和API v2功能以实现向后兼容性,但是由于API v1为deprecated,因此现在仅应使用API​​ v2。 tutorial涵盖了使用API​​ v2功能的基本知识。





这使用Dropbox Python SDK从远程路径/Homework/math/Prime_Numbers.txt的Dropbox API将文件下载到本地文件Prime_Numbers.txt

import dropbox
dbx = dropbox.Dropbox("<ACCESS_TOKEN>")

with open("Prime_Numbers.txt", "wb") as f:
    metadata, res = dbx.files_download(path="/Homework/math/Prime_Numbers.txt")
    f.write(res.content)


<ACCESS_TOKEN>应该替换为您的访问令牌。





对于上传:

这使用Dropbox Python SDK将文件从file_path指定的本地文件上载到Dropbox API,到dest_path指定的远程路径。它还根据文件的大小选择是否使用上载会话:

f = open(file_path)
file_size = os.path.getsize(file_path)

CHUNK_SIZE = 4 * 1024 * 1024

if file_size <= CHUNK_SIZE:

    print dbx.files_upload(f.read(), dest_path)

else:

    upload_session_start_result = dbx.files_upload_session_start(f.read(CHUNK_SIZE))
    cursor = dropbox.files.UploadSessionCursor(session_id=upload_session_start_result.session_id,
                                               offset=f.tell())
    commit = dropbox.files.CommitInfo(path=dest_path)

    while f.tell() < file_size:
        if ((file_size - f.tell()) <= CHUNK_SIZE):
            print dbx.files_upload_session_finish(f.read(CHUNK_SIZE),
                                            cursor,
                                            commit)
        else:
            dbx.files_upload_session_append(f.read(CHUNK_SIZE),
                                            cursor.session_id,
                                            cursor.offset)
            cursor.offset = f.tell()

f.close()

关于python - Dropbox Python API:上传文件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43709247/

10-15 20:22