[编辑]
此问题已得到解答,我不接受任何新答案。
[结束编辑]
注意:在不同的编程语言中存在类似这样的问题,但它们没有特别针对Python的 dropbox
库(至少我可以'找不到任何问题,这就是我创建这个问题的原因。
我想知道如何使用Python 2.7中的dropbox
库将文件上传到我的Dropbox并重新读取文件。
我已成功连接到Dropbox,Dropbox对象名为db。
如果有人知道怎么做,请写一个包含方法调用和参数的答案,如果这是一个重复的问题,请用链接评论。
提前谢谢!
答案 0 :(得分:1)
Dropbox Python SDK提供API v1和API v2功能以实现向后兼容性,但现在只应使用API v2,因为API v1为deprecated。 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()
答案 1 :(得分:0)
注意强>
这是API v1,现在已弃用。小心使用或使用当前支持的API。
初始化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
答案 2 :(得分:0)
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()