Bja*_*eus 5 python google-api-client
我想将照片上传到谷歌驱动器。我可以读取驱动器上的文件。但是当我为上传部分添加广告时,从第 49 行到第 55 行,我不断收到相同的错误。我不断收到错误“NameError: name 'drive_service' is not defined” 我已经导入了每个库,但仍然无法工作 这是我环顾四周的代码,但还没有看到解释它的帖子。
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'))
Run Code Online (Sandbox Code Playgroud)
您已经与此行建立了连接:
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()
Run Code Online (Sandbox Code Playgroud)
和:
file = drive.files().create(body=file_metadata,
media_body=media,
fields='id').execute()
Run Code Online (Sandbox Code Playgroud)
你的脚本应该可以工作。
小智 5
您可以直接使用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()
Run Code Online (Sandbox Code Playgroud)