Python 是否有任何方法只列出根文件夹上的文件或在谷歌驱动器API上的任何级别的文件,只需要一个请求?

Python 是否有任何方法只列出根文件夹上的文件或在谷歌驱动器API上的任何级别的文件,只需要一个请求?,python,python-3.x,google-drive-api,Python,Python 3.x,Google Drive Api,我试图做的是从Google驱动器文件创建一个本地文件树(就像缓存一样),这样我就不必每次需要文件信息时都发出HTTP请求(配额在Google API上是有限的) 我最好的方法是一次请求所有文件,因此我有一个巨大的列表,没有太多的HTTP请求,我可以将它们链接起来创建树。它通过对文件做一些技巧来工作,但问题是我得到的文件比我需要的多得多(接收到9729个,只有1764个有用),因为我无法想出一个高效的服务。我正在下载所有的文件(包括sharedWithMe,除了垃圾,因为它有一个简单的过滤器tra

我试图做的是从Google驱动器文件创建一个本地文件树(就像缓存一样),这样我就不必每次需要文件信息时都发出HTTP请求(配额在Google API上是有限的)

我最好的方法是一次请求所有文件,因此我有一个巨大的列表,没有太多的HTTP请求,我可以将它们链接起来创建树。它通过对文件做一些技巧来工作,但问题是我得到的文件比我需要的多得多(接收到9729个,只有1764个有用),因为我无法想出一个高效的服务。我正在下载所有的文件(包括sharedWithMe,除了垃圾,因为它有一个简单的过滤器
trashed=false
,也只下载必要的字段),而且由于不必要的数据,下载时间比需要的时间长得多

我只是想获取MyDrive(root)文件夹下的文件(有一些,我不能简单地通过在owner中使用
q='me'忽略它们)。换句话说,我只想得到根级别的文件,根级别文件的子文件,等等。有什么疑问吗?或者至少让它更有效率


注意:这不是一个。我发现创建树的最佳方法是:

  • 请求所有文件夹的files.list(
    q:mimeType='application/vnd.google apps.folder'
    ),因为通常文件夹少于文件
    trashed=false也很有用
  • 创建树结构,丢弃所有无用的文件夹
  • 对于树中的每个文件夹,获取它们的id,然后使用
    q='mimeType!='file.listapplication/vnd.google apps.folder'和(父项中的folderId1'或父项中的folderId2或…或父项中的folderIdN)
    (注意太复杂的查询错误,正文太大[可能超过25000个字符,不确定])
  • 完成树的链接
  • 这样做,将有一些无用的数据和一些请求,但下载的数据量远远少于没有任何
    q
    限制的列表文件


    这个想法来自于

    答案中的备选方案3。

    虽然我不确定是否能正确理解您的目标,例如,当您想要检索根文件夹下的文件列表时,使用parents
    中的
    'root'搜索查询驱动器API中的files.list方法如何?另外,当您想要检索特定文件夹下的文件列表时,在parents
    中使用
    “folder Id”的搜索查询如何?如果我误解了你的情况和目标,我很抱歉。这也行得通,唯一的问题是,对于每个文件夹,我都必须发出HTTP请求,目标是尽可能减少请求量,既要使其运行更快,也不要使用Google API的过多配额(HTTP请求是有限的)。例如,我的谷歌硬盘中有651个文件夹,需要651个HTTP请求才能获取这些文件夹中的所有文件。谢谢您的回复。我为我不完整的评论道歉。在您的情况下,如何在parents中使用查询参数,如
    'folderId1',或在parents中使用'folderId2',,,,
    ?或者使用批处理请求如何?对于这两种方法,您都可以从特定文件夹中检索文件列表。如果这不是你想要的方向,我很抱歉。谢谢你的回复,你的建议很有趣,这将需要“树的高度”请求,因为在第一个请求中,我拥有的唯一id来自根,然后在第二个请求中是根的子代,依此类推。在某些情况下,这可能比下载所有文件更快,但由于请求的延迟,这可能会更慢。批处理也有这个问题,因为我需要按顺序请求以获取下一个ID,首先我有根,其次我有根子级,等等。你好@Lucasjrt,如果你能发布关于如何解决问题的答案,请。这对我们来说很重要。