我认识的人想要一个程序,列出某个文件夹中文件的所有谷歌驱动器ID。所以我查看了谷歌网站,了解了如何在python中做到这一点并想出了一个程序。问题是似乎有一个限制,但我无法理解:
如果我使用此代码:
credentials = get_credentials()
http = credentials.authorize(httplib2.Http())
service = discovery.build('drive', 'v2', http=http)
par = {'maxResults':1000}
results = service.files().list(**par).execute()
items = results.get('items', [])
folders = {}
if not items:
print('No files found.')
else:
print("There is "+str(len(items))+" items")
我在google开发者网站的示例中使用了get_credentials()
,问题是我确定我正在访问的驱动器有超过1000个文件,但程序仍告诉我{{1 ,这有什么方法可以限制为460?
答案 0 :(得分:2)
我不做Python,但我认为你错过了' nextPage'逻辑。请参阅(至少在Java中)该列表返回一个页面'结果一次,所以必须有另一个循环来检索下一页(只要有一个可用),如:
void list(String prnId) {
String qryClause = "'me' in owners and '" + prnId + "' in parents";
Drive.Files.List qry = mGOOSvc.files().list()
.setQ("'me' in owners and '" + prnId + "' in parents")
.setFields("items, nextPageToken");
String npTok = null;
do {
FileList gLst = qry.execute();
if (gLst != null) {
// BINGO - file list, but only one page worth
npTok = gLst.getNextPageToken(); //GET POINTER TO THE NEXT PAGE
qry.setPageToken(npTok);
}
} while (npTok != null && npTok.length() > 0);
}
请参阅' do while()'循环和' BINGO '评论?尝试将其实施到您的PY代码中(不要忘记要求' nextPageToken'来获取它)。
此外,this page底部还有一个很棒的工具 TryIt! ,您可以在其中测试所有类型的内容。
祝你好运
答案 1 :(得分:1)
我有同样的问题,即使我将maxResults设置为1000 ......
,我仍然会收到460个结果根据文档:“maxResults:要返回的最大文件数。可接受的值为0到1000(含)。(默认值:100)”