google - Error de la API de unidad: python no encuentra el archivo json de inicio rápido
pydrive (1)
Intento usar Google-drive-api y tengo un problema. Seguí con precisión todas las instrucciones del tutorial de inicio rápido para la api de Google Drive y tengo un error con un archivo que no tengo. Tutorial de inicio rápido de Python Aquí está mi código:
from __future__ import print_function
import httplib2
import os
from apiclient import discovery
from oauth2client import client
from oauth2client import tools
from oauth2client.file import Storage
try:
import argparse
flags = argparse.ArgumentParser(parents=[tools.argparser]).parse_args()
except ImportError:
flags = None
# If modifying these scopes, delete your previously saved credentials
# at ~/.credentials/drive-python-quickstart.json
SCOPES = ''https://www.googleapis.com/auth/drive.metadata''
CLIENT_SECRET_FILE = ''client_secret.json''
APPLICATION_NAME = ''Drive API Python Quickstart''
def get_credentials():
"""Gets valid user credentials from storage.
If nothing has been stored, or if the stored credentials are invalid,
the OAuth2 flow is completed to obtain the new credentials.
Returns:
Credentials, the obtained credential.
"""
home_dir = os.path.expanduser(''~'')
credential_dir = os.path.join(home_dir, ''.credentials'')
if not os.path.exists(credential_dir):
os.makedirs(credential_dir)
credential_path = os.path.join(credential_dir,
''drive-python-quickstart.json'')
store = Storage(credential_path)
credentials = store.get()
if not credentials or credentials.invalid:
flow = client.flow_from_clientsecrets(CLIENT_SECRET_FILE, SCOPES)
flow.user_agent = APPLICATION_NAME
if flags:
credentials = tools.run_flow(flow, store, flags)
else: # Needed only for compatibility with Python 2.6
credentials = tools.run(flow, store)
print(''Storing credentials to '' + credential_path)
return credentials
def main():
"""Shows basic usage of the Google Drive API.
Creates a Google Drive API service object and outputs the names and IDs
for up to 10 files.
"""
credentials = get_credentials()
http = credentials.authorize(httplib2.Http())
service = discovery.build(''drive'', ''v3'', http=http)
results = service.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(''{0} ({1})''.format(item[''name''], item[''id'']))
if __name__ == ''__main__'':
main()
Resultado:
C: / Python27 / lib / site-packages / oauth2client_helpers.py: 255: UserWarning: no se puede acceder a C: / Users / Neyoh.credentials / drive-python-quickstart.json: ningún archivo o directorywarnings.warn (_MISSING_FILE_MESSAGE.format ( nombre del archivo))
Tengo el archivo client_secret.json
en el directorio de mi script python, pero en HOME/.credentials/
, no tengo nada. El tutorial habla sobre client_secret.json
pero no sobre drive-python-quickstart.json
. Nunca se menciona. ¿Qué es drive-python-quickstart.json
? Es el mismo archivo?
Edit1: Cuando uso client_secret.json
en /.credentials/
lugar de drive-python-quickstart.json
tengo este error:
Archivo "C: / Python27 / lib / site-packages / oauth2client / client.py", línea 302, en new_from_json module_name = data [''_ module''] KeyError: ''_module''
Entré en el mismo problema con google calendar api. Para resolver el problema simplemente use la ruta absoluta del archivo a su CLIENT_SECRET_FILE
como:
CLIENT_SECRET_FILE = r''C:/Users/xxx/client_secret.json''
El archivo drive-python-quickstart.json
se creará después de la autenticación de forma automática.