Google Drive API

时间:2018-03-13 03:21:18

标签: python google-drive-api

我正在使用Python通过Google Drive API访问我的Google云端硬盘帐户。我只想列出名称以某个长字符串开头的文件。为此,我使用files.list contains子句,如this documentation中所述。我发现当搜索字符串超过26个字符时,这种方法无法正常工作。

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

  1. 设置Google云端硬盘服务帐户。

  2. 在您的Google云端硬盘帐户中创建一个文件夹,并授予服务帐户访问权限。

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

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

  5. 以下是我用来测试的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没有出现在第二个结果中?

0 个答案:

没有答案