在根目录删除大量文件

时间:2019-06-26 08:35:41

标签: google-drive-api

由于错误,我在Google驱动器的根目录中保存了大量文件(> 100k个文件)。我无法轻松地在线删除它们。

我目前正在尝试使用file list apifile delete api删除它们,虽然可以,但是速度很慢。

我也没有找到一种方法来计算根目录还剩下多少文件来估计需要多少时间。

有人能更快地删除文件或计数吗?

2 个答案:

答案 0 :(得分:0)

这可能将是您唯一的选择。是的,该api的速度很慢,但它是您无需付费的免费api。

我首先要使用类似这样的q参数做一个file.list

'root' in parents and mimeType != 'application/vnd.google-apps.folder'

这将返回根目录中的所有文件。然后,您可以循环一次删除它们一次。

答案 1 :(得分:0)

Google Drive REST API提供了一种批处理方法,可一次发出多个请求,并且比一次完成一个请求要快。您可以查看发出批处理请求here的完整参考,包括所支持语言的代码段。您可以使用下面的python代码段向Drive REST API进行批量删除请求:

listOfFileIDs = [] 

def callback(request_id, response, exception):
    if not exception:
        print(response)
    else:
        print(exception)

batch = vals.service.new_batch_http_request(callback = callback)

for file_id in listOfFileIDs:
    batch.add(vals.service.files().delete(fileId = file_id))

print(batch.execute())

您应该通过发出listOfFileIDs请求来填充Files: list,以获取要删除的文件ID的列表。

Things to remember

  • 每个批次最多只能进行100次呼叫,因此仍然需要向服务器发出多个批次请求
  • 由于此批次限制,
  • listOfFileIDs的最大长度也只能为100个
  • 批处理请求比单个请求更快,并且占用的配额更少

您可以在Developer's Console上跟踪项目的请求。应用程序配额的礼节性限制是每位用户每100秒1000个请求,以及您可以在the quota tab for you application上看到的其他一些配额限制。如果您继续收到Exponential backoff403: Rate limit exceeded,则可能还需要使用403: User rate limit exceeded限制请求速率。

相关问题