Dropbox Python API: 上传文件

Dropbox Python API: Uploading a file

[编辑]

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

[结束编辑]

注意:在不同的编程语言中都有类似的问题,但它们没有解决 dropbox 库 Python 特别是(或者至少我找不到这样做的),这就是我创建这个问题的原因。

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

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

如果有人知道如何做到这一点,请写一个包含方法调用和参数的答案,或者如果这是一个重复的问题,请用 link 评论。

提前致谢!

备注

这是 API v1,现已弃用。谨慎使用或使用目前支持的APIs.

初始化 Dropbox 客户端

import dropbox
access_token = 'SOME_ACCESS_TOKEN'
client = dropbox.client.DropboxClient(access_token)

上传文件

src_file = open('SOME_LOCAL_FILE', 'r')
response = client.put_file('SOME_REMOTE_FILE', src_file)

下载文件

dest_file = open('SOME_LOCAL_FILE', 'w')
with client.get_file('SOME_REMOTE_FILE') as src_file:
    dest_file.write(src_file.read())

参考

更简洁的API文档请参考Core API for Python Documentation

Dropbox Python SDK provides both API v1 and API v2 functionality for backwards compatibility, but only API v2 should be used now, as API v1 is deprecated. The 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()
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, 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:
        commit = dropbox.files.CommitInfo(path=dest_path)    
        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()