名称错误:名称“drive_service”未定义 Google API。

6

我想将照片上传到Google Drive。 我可以读取驱动器上的文件。 但是当我添加上传部分(从第49行到第55行)时,我一直收到相同的错误。 我一直收到错误“NameError:未定义名称'drive_service'” 尽管已导入所有库,但仍无法正常工作。 这是我的代码。 我已经搜索过,但没有看到解释这个问题的帖子。

from __future__ import print_function
from googleapiclient.discovery import build
from httplib2 import Http
from oauth2client import file, client, tools
from apiclient.http import MediaFileUpload



# If modifying these scopes, delete the file token.json.
SCOPES = 'https://www.googleapis.com/auth/drive'

def main():
    """Shows basic usage of the Drive v3 API.
    Prints the names and ids of the first 10 files the user has access to."""
    # The file token.json stores the user's access and refresh tokens, and is
    # created automatically when the authorization flow completes for the first
    # time.
    store = file.Storage('token.json')
    creds = store.get()
    if not creds or creds.invalid:
        flow = client.flow_from_clientsecrets('credentials.json', SCOPES)
        creds = tools.run_flow(flow, store)
    drive = build('drive', 'v3', http=creds.authorize(Http()))

    # Call the Drive v3 API
    results = drive.files().list(
        pageSize=10, fields="nextPageToken, files(id, name)").execute()
    items = results.get('files', [])

    if not items:
        print('No files found.')
    else:
        print('Files:')
        for item in items:
            print(u'{0} ({1})'.format(item['name'], item['id']))

if __name__ == '__main__':
    main()

file_metadata = {'name': 'photo.jpg'}
media = MediaFileUpload('photo.jpg',
                        mimetype='image/jpeg')
file = drive_service.files().create(body=file_metadata,
                                    media_body=media,
                                    fields='id').execute()
print ('File ID: %s' % file.get('id'))

1
你是否期望在那个时间点drive_service这个名称被定义?为什么? - Stop harming Monica
1
我按照谷歌的教程操作,但好像不起作用。 - Bjarne Glorieus
3个回答

6

你可以直接使用service而不是driver_service。这对我有效。

如代码示例所示:

file_metadata = {'name': 'photo.jpg'}
media = MediaFileUpload('photo.jpg',
                        mimetype='image/jpeg')
file = service.files().create(body=file_metadata,
                                    media_body=media,
                                    fields='id').execute()

5

您已经建立了与此行的连接:

drive = build('drive', 'v3', http=creds.authorize(Http()))

在调用file = drive_service.files()时,您必须传递刚刚建立的连接。因此,不要使用drive_service,而要使用drive(您刚刚建立的连接)。

总之,您应该将以下内容替换为:

file = drive_service.files().create(body=file_metadata,
                                    media_body=media,
                                    fields='id').execute()

使用:

file = drive.files().create(body=file_metadata,
                            media_body=media,
                            fields='id').execute()

并且你的脚本应该正常工作。

3

drive_service更改为drive或反之


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接