Google Drive API:是否记录了Drive_service.files().list()上的get()方法



在这个链接中,Python中有一个get方法:

response = drive_service.files().list(q="mimeType='image/jpeg'",
spaces='drive',
fields='nextPageToken, files(id, name)',
pageToken=page_token).execute()
for file in response.get('files', []):

我猜get((方法会得到一个文件列表,如果没有,它会返回一个空列表,但这是在哪里记录的?API文档没有。它只是简单地说:

Returns:
An object of the form:
...

它没有记录任何方法。

根据您的脚本,我认为for file in response.get('files', []):get是内置类型的方法。参考

fields='nextPageToken, files(id, name)'fieldsdrive_service.files().list()返回一个类似{"nextPageToken": "###", "files": [{"id": "###", "name": "###"},,,]}的对象。Ref当未找到mimeType='image/jpeg'的文件时,返回{"files": []}

在这种情况下,您也可以使用response.get('files')

参考文献:

  • get
  • 文件:列表

files.list方法返回文件列表响应

{
"kind": "drive#fileList",
"nextPageToken": string,
"incompleteSearch": boolean,
"files": [
files Resource
]
}

文件列表响应包含请求返回的所有文件资源的列表。如果没有返回,文件将是一个空列表。

默认情况下,它不会返回完整的文件资源对象——许多字段为空。

{
"kind": "drive#file",
"id": "1x8-vD-XEA5Spf3qp8x2wltablGF22Lpwup8VtxNY",
"name": "Experts Activity Dump go/ExpertsActivities",
"mimeType": "application/vnd.google-apps.spreadsheet"
},

解决方法是添加一个可选的参数fields=*,然后您将获得一个完整的文件资源对象。不过,这可能会导致一个非常大的请求。

file.get方法返回请求的文件id的文件资源。所以你必须向它传递一个你想要请求的文件的file.id。

背景信息原始版本

在谷歌硬盘v3。File.list不适用于fields=*它只适用于只返回默认字段,其他字段都为空。这迫使我们在每个需要完整响应的文件上使用File.get。从那以后,这一问题得到了解决,使其变得更容易,并且只需要对api进行一次调用就可以填充对象的所有属性。

问题仍然是,这是一开始的错误,还是按预期工作,他们修补了它,以停止吃掉我们所有的配额。

最新更新