Google drive api googledrivepythonapi:添加多个属性

Google drive api googledrivepythonapi:添加多个属性,google-drive-api,Google Drive Api,这个问题是关于这个问题的 我想在文件的properties元数据字段中添加多个条目,以便使用files().list()对文件进行索引。这是我的密码: #定义读写权限 作用域=['https://www.googleapis.com/auth/drive.file'] #检查用户的访问和刷新令牌是否已存在 进口泡菜 导入操作系统 如果os.path.exists('token.pickle'): 将open('token.pickle','rb')作为f: creds=酸洗负荷(f) 其他: 信

这个问题是关于这个问题的

我想在文件的
properties
元数据字段中添加多个条目,以便使用
files().list()
对文件进行索引。这是我的密码:

#定义读写权限
作用域=['https://www.googleapis.com/auth/drive.file']
#检查用户的访问和刷新令牌是否已存在
进口泡菜
导入操作系统
如果os.path.exists('token.pickle'):
将open('token.pickle','rb')作为f:
creds=酸洗负荷(f)
其他:
信誉=无
"""
如果用户的访问和刷新令牌不存在,或者它们不再有效,则创建并保存它们。如果credentials.json文件不在用户的工作目录中,这将不起作用。
"""
从google_auth_oauthlib.flow导入安装的应用程序流
从google.auth.transport.requests导入请求
如果没有信用或信用无效:
如果creds和creds.expired和creds.refresh\u令牌:
creds.refresh(请求())
其他:
flow=InstalledAppFlow.from_client_secrets_文件('credentials.json',SCOPES)
creds=flow.运行本地服务器(端口=0)
将open('token.pickle','wb')作为f:
腌菜垃圾场(creds,f)
"""
检查身份验证流是否工作。这应与credentials.json文件中“client_id”字段中的字符串相同。此外,如果访问和刷新令牌不存在,则token.pickle文件现在应位于用户的工作目录中。
"""
打印('client_id为:{}'。格式(creds.client_id))
#创建一个驱动器对象以直接与用户的Google驱动器交互。
从GoogleAppClient.discovery导入生成
驱动器=生成('drive','v3',凭据=凭据)
#在用户的Google驱动器的根目录中创建一个文件夹。
文件夹\u元数据={
'name':'TestFolder',
“mimeType”:“application/vnd.google apps.folder”
}
folder=drive.files().create(body=folder\u元数据,字段='id,name')。execute()
#将具有可索引属性的文件上载到创建的文件夹
#首先创建文件
将open('HelloWorld.txt','w')作为f:
f、 写下(“你好,世界!”)
#然后定义元数据
property1={'key':'day\u of u week','value':'Monday'}
property2={'key':'patient_num','value':'001'}
文件\u元数据={
'name':'HelloWorld.txt',
“家长”:[文件夹['id']],
“属性”:[property1,property2]
}
#最后上传
从GoogleAppClient.http导入MediaFileUpload
media=MediaFileUpload('HelloWorld.txt',chunksize=-1,resumable=False)
file=drive.files().create(body=file\u metadata,media\u body=media,fields='name,properties')。execute()
#尝试搜索该文件
query=“属性具有{key='patient_num'和value='001'}”
files\u list=drive.files().list(q=query,fields='files(name,properties)')。execute()
执行此代码时,
文件列表
包含
{'files':[]}
。原因是
文件
变量包含:

{'name': 'HelloWorld.txt',
 'properties': {'value': 'Monday', 'key': 'day_of_week'}}
显然,
'patient\u num'
属性没有添加到
属性
字段中,即使它是在
文件元数据
字典中明确定义的。我知道这是堆栈溢出,但我觉得建议的解决方案效率低下。如何将多个属性添加到文件中,以便可以使用
day\u of u week
属性或
patient\u num
属性或同时使用这两个属性对其进行索引?此外,一旦我可以这样做,我应该如何修改
query
,以便能够同时使用多个属性进行索引


非常感谢您的帮助。

以下是多个属性的正确查询格式,以备任何人需要

#尝试搜索该文件
query=“属性具有{key='day\u of_week'和value='Monday'},属性具有{key='patient\u num'和value='001'}”
files\u list=drive.files().list(q=query,fields='files(name,properties)')。execute()
完整的工作代码为:

#定义读写权限
作用域=['https://www.googleapis.com/auth/drive.file']
#检查用户的访问和刷新令牌是否已存在
进口泡菜
导入操作系统
如果os.path.exists('token.pickle'):
将open('token.pickle','rb')作为f:
creds=酸洗负荷(f)
其他:
信誉=无
"""
如果用户的访问和刷新令牌不存在,或者它们不再有效,则创建并保存它们。如果credentials.json文件不在用户的工作目录中,这将不起作用。
"""
从google_auth_oauthlib.flow导入安装的应用程序流
从google.auth.transport.requests导入请求
如果没有信用或信用无效:
如果creds和creds.expired和creds.refresh\u令牌:
creds.refresh(请求())
其他:
flow=InstalledAppFlow.from_client_secrets_文件('credentials.json',SCOPES)
creds=flow.运行本地服务器(端口=0)
将open('token.pickle','wb')作为f:
腌菜垃圾场(creds,f)
"""
检查身份验证流是否工作。这应与credentials.json文件中“client_id”字段中的字符串相同。此外,如果访问和刷新令牌不存在,则token.pickle文件现在应位于用户的工作目录中。
"""
打印('client_id为:{}'。格式(creds.client_id))
#创建一个驱动器对象以直接与用户的Google驱动器交互。
从GoogleAppClient.discovery导入生成
驱动器=生成('drive','v3',凭据=凭据)
#在用户的Google驱动器的根目录中创建一个文件夹。
文件夹\u元数据={
'name':'TestFolder',
“mimeType”:“application/vnd.google apps.folder”
}
folder=drive.files().create(body=folder\u元数据,字段='id,name')。execute()
#将具有可索引属性的文件上载到创建的文件夹
#首先创建文件
将open('HelloWorld.txt','w')作为f:
f、 写下(“你好,世界!”)
#然后定义元数据
属性={
“我们的日子”