在这个链接中,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)'
的fields
,drive_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进行一次调用就可以填充对象的所有属性。
问题仍然是,这是一开始的错误,还是按预期工作,他们修补了它,以停止吃掉我们所有的配额。