表观字符限制文件.listgoogledriveapi中的搜索字符串

2024-06-30 05:51:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用Python通过googledriveapi访问我的googledrive帐户。我只想列出那些名称以某个长字符串开头的文件。为此,我使用files.listcontains子句,如this documentation所述。我发现,当搜索字符串超过26个字符时,这种方法不会像预期的那样工作。你知道吗

要复制,请执行以下操作:

  1. 设置Google Drive服务帐户。

  2. 在您的Google驱动器帐户中创建一个文件夹,并授予服务帐户访问权限。

  3. 将两个空文件上载到此文件夹,一个名为abcdefghijklmnopqrstuvwxyz1,另一个名为abcdefghijklmnopqrstuvwxyza1

  4. 使用API列出文件夹中的文件,首先匹配包含abcdefghijklmnopqrstuvwxyz的文件,然后匹配包含abcdefghijklmnopqrstuvwxyza的文件。第一次搜索预期返回两个文件,但是第二次搜索应该返回第二个文件,但不返回任何文件。

下面是我用来测试的Python代码:

import httplib2
from oauth2client.service_account import ServiceAccountCredentials
from apiclient import discovery

SCOPES = 'https://www.googleapis.com/auth/drive'
CLIENT_SECRET_FILE = 'client_secret.json'

credentials = ServiceAccountCredentials.from_json_keyfile_name(CLIENT_SECRET_FILE, SCOPES)
http = credentials.authorize(httplib2.Http())
service = discovery.build('drive', 'v3', http=http)
folder = '1mkebcpZ-mIhq4dLWwePqHqwzw6kUAj1-'

prefix = 'abcdefghijklmnopqrstuvwxyz'

results = service.files().list(
    fields="files(id, name)",
    q="'%s' in parents and name contains '%s'" % (folder, prefix)
).execute()

print('First result:')
print(results['files'])

prefix = 'abcdefghijklmnopqrstuvwxyza'

results = service.files().list(
    fields="files(id, name)",
    q="'%s' in parents and name contains '%s'" % (folder, prefix)
).execute()

print('Second result:')
print(results['files'])

以下是我的输出:

First result:
[{u'id': u'1Wwzym1ZVMTWzuX-K0eT0-xJrWI8t_YGN', u'name': u'abcdefghijklmnopqrstuvwxyza1'}, {u'id': u'16i4SSwYSbhV9hCFUaCwE7nrYdxBntIi_', u'name': u'abcdefghijklmnopqrstuvwxyz1'}]
Second result:
[]

为什么文件abcdefghijklmnopqrstuvwxyza1没有出现在第二个结果中?你知道吗


Tags: 文件namefromimport文件夹idhttpprefix