【发布时间】:2016-08-12 07:26:44
【问题描述】:
我正在寻找一种使用 Dropbox API 来恢复我的文件的方法,Google 把我带到了这里。
首先说一下我的情况:
我的计算机感染了病毒,它重命名了我的所有文件(如果在 Dropbox 上识别为重命名或删除,则为 idk),并且它们都已同步到 Dropbox。我想使用 Dropbox API 下载我所有的原始文件。
正如我在网络界面上看到的,我可以单独下载它们,但我有几千个文件,所以我做不到。
我的问题:
我使用 Python API 包装器来处理 Dropbox API。我首先获取了我的所有文件并尝试获取它们的所有修订版,但原始文件未包含在修订版列表中。
然后我尝试列出我的所有文件,包括已删除的文件,我可以看到列出的原始文件。我尝试使用下载端点下载它们,但它返回 File not found 错误。有没有人碰到过类似的事情?我该如何解决这个问题?
我的代码 sn-p:
dbx = dropbox.Dropbox('token is intentionally hidden')
print dbx.users_get_current_account()
for entry in dbx.files_list_folder('', recursive = False, include_deleted = True).entries:
if (isinstance(entry, dropbox.files.FileMetadata) or isinstance(entry, dropbox.files.DeletedMetadata)):
if not entry.name.endswith('cerber2'):
print "name: ", entry.name, "| path: ", entry.path_lower
print repr(entry)
try:
meta, resp = dbx.files_download(entry.path_lower)
except dropbox.exceptions.ApiError as e:
print e.user_message_text
print "-" * 80
【问题讨论】:
-
[交叉链接供参考:dropboxforum.com/hc/en-us/community/posts/… ] 首先,您可以发布您遇到的完整错误吗?此外,乍一看,您对
files_restore的调用看起来是错误的,因为该方法需要两个参数,而您只传入一个。 -
对不起,我粘贴了错误的代码,我刚刚更新了我的帖子,我实际上使用了 files_download() 而不是 files_restore()
-
我实际上得到了
ApiError异常,我希望能够下载已删除的文件,因为我可以在 Dropbox 网络界面上这样做。 -
你能打印
e吗?应该有一个更有用的错误。另外,我不确定您为什么要调用files_download两次,但如果您尝试下载文件的较旧(未删除)版本,则需要指定rev,例如,如由files_list_revisions返回。 -
我也是这么认为的,因为我的原始文件出现在 Dropbox 网络界面的早期版本部分中,但是当我尝试调用
files_list_revisions时,它们没有列出。它们仅在我指定include_deleted = True时显示。我的意思是只有 1 次下载,我只是编辑了我的帖子。没有有用的错误信息,当我抓到 HTTP 包时,服务器响应 409“找不到文件”。
标签: python dropbox dropbox-api