首页 > 解决方案 > 在根目录下删除大量文件

问题描述

我错误地将大量文件保存在我的谷歌驱动器的根目录(> 100k 个文件)。我不能轻易地在线删除它们。

我目前正在尝试使用文件列表 api文件删除 api来删除它们,它可以工作,但它真的很慢。

此外,我没有找到一种方法来计算根目录下还有多少文件来估计这将花费多少时间。

有没有人有更快的方法来删除文件,或者计算它们的方法?

标签: google-drive-api

解决方案


Google Drive REST API 提供了一种一次性发出多个请求的批处理方法,并且比一次发出一个请求完成得更快。您可以在此处查看发出批处理请求的完整参考资料,包括支持语言的代码片段。您可以使用以下 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 列表来进行填充。

要记住的事情

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

您可以在Developer's Console跟踪项目的请求。应用程序配额的礼貌限制是每位用户每 100 秒 1000 个请求,以及您可以在应用程序的配额选项卡上看到的其他一些配额限制。如果您继续接收403: Rate limit exceeded403: User rate limit exceeded.


推荐阅读