使用PyDrive调用Google Drive API时遇'Invalid query'错误求助
解决PyDrive中Google Drive查询语句无效的问题
问题原因
你的查询报错是因为查询共享驱动器文件时缺少corpora参数配置,同时需确保查询语法的引号嵌套正确。PyDrive基于Drive API v2,当启用supportsAllDrives和includeItemsFromAllDrives时,必须指定corpora='allDrives'才能正确跨驱动器查询。
修复后的代码
from pydrive.auth import GoogleAuth from pydrive.drive import GoogleDrive GoogleAuth.DEFAULT_SETTINGS['client_config_file'] = r"client_secrets.json" gauth = GoogleAuth(settings_file='settings.yaml') drive = GoogleDrive(gauth) folder_id = "your-folder-id" target_filename = "test" # 正确的查询语句 + 必要的corpora参数 file_list = drive.ListFile({ 'q': f"name = '{target_filename}' and '{folder_id}' in parents and trashed=false", 'supportsAllDrives': True, 'includeItemsFromAllDrives': True, 'corpora': 'allDrives' # 必须添加该参数才能查询共享驱动器内容 }).GetList() # 检查结果 if file_list: print(f"找到文件: {file_list[0]['title']}") else: print("未找到指定名称的文件")
关键说明
- corpora参数:查询包含共享驱动器的内容时,必须设置为
allDrives,否则API会返回无效查询错误。 - 查询语法:确保引号嵌套正确,使用f-string时外层用双引号包裹查询语句,内部字符串用单引号;反之亦可,避免引号冲突。
- trashed=false:建议始终添加该条件,避免查询到已删除的文件。
内容的提问来源于stack exchange,提问作者Umair Ayub
相关产品推荐
相关产品推荐

