Google API:为什么找不到我的文件?

时间:2018-04-30 04:28:58

标签: python python-3.x google-sheets-api

所以我正在尝试使用Google Drive API,但我一直遇到错误(无法访问credentials.json:没有这样的文件或目录)。我查看了其他人做了什么,他们通过使用绝对文件路径解决了它。我尝试了这个:

if not creds or creds.invalid:
    flow = client.flow_from_clientsecrets('client_secret.json', SCOPES)
    creds = tools.run_flow(flow, store)    

分为:

if not creds or creds.invalid:
    flow = client.flow_from_clientsecrets(r'C:\Users\FIEND\Documents\Google Sheets Script\client_secret.json', SCOPES)
    creds = tools.run_flow(flow, store)

这两个都有这个错误:

C:\Users\FIEND\AnacondaTests\lib\site-packages\oauth2client\_helpers.py:255: 
UserWarning: Cannot access credentials.json: No such file or directory
warnings.warn(_MISSING_FILE_MESSAGE.format(filename))
usage: ipykernel_launcher.py [--auth_host_name AUTH_HOST_NAME]
                         [--noauth_local_webserver]
                         [--auth_host_port [AUTH_HOST_PORT [AUTH_HOST_PORT 
...]]]
                         [--logging_level 
{DEBUG,INFO,WARNING,ERROR,CRITICAL}]
ipykernel_launcher.py: error: unrecognized arguments: -f 
C:\Users\FIEND\AppData\Roaming\jupyter\runtime\kernel-aa1a9ef5-446a-46d0- 
b6fb-032bd6d673e7.json
An exception has occurred, use %tb to see the full traceback.

SystemExit: 2


C:\Users\FIEND\AnacondaTests\lib\site- 
packages\IPython\core\interactiveshell.py:2918: UserWarning: To exit: use 
'exit', 'quit', or Ctrl-D.
 warn("To exit: use 'exit', 'quit', or Ctrl-D.", stacklevel=1)

以下是其余代码供参考:

"""
Shows basic usage of the Sheets API. Prints values from a Google 
Spreadsheet.
"""
from __future__ import print_function
from apiclient.discovery import build
from httplib2 import Http
from oauth2client import file, client, tools

# Setup the Sheets API
SCOPES = 'https://www.googleapis.com/auth/spreadsheets.readonly'
store = file.Storage('credentials.json')
creds = store.get()
if not creds or creds.invalid:
    flow = client.flow_from_clientsecrets('client_secret.json', SCOPES)
    creds = tools.run_flow(flow, store)
service = build('sheets', 'v4', http=creds.authorize(Http()))
# Call the Sheets API
SPREADSHEET_ID = '1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms'
RANGE_NAME = 'Class Data!A2:E'
result = service.spreadsheets().values().get(spreadsheetId=SPREADSHEET_ID,
                                         range=RANGE_NAME).execute()
values = result.get('values', [])
if not values:
    print('No data found.')
else:
    print('Name, Major:')
    for row in values:
        # Print columns A and E, which correspond to indices 0 and 4.
        print('%s, %s' % (row[0], row[4]))

修改

制作一个空的credentials.json文件清除了大部分错误,但我仍然收到“错误:无法识别的参数”。

完整错误文字:

usage: ipykernel_launcher.py [--auth_host_name 
AUTH_HOST_NAME]
                         [--noauth_local_webserver]
                         [--auth_host_port [AUTH_HOST_PORT 
[AUTH_HOST_PORT ...]]]
                         [--logging_level 
{DEBUG,INFO,WARNING,ERROR,CRITICAL}]
ipykernel_launcher.py: error: unrecognized arguments: -f 
C:\Users\FIEND\AppData\Roaming\jupyter\runtime\kernel- 
c568600c-15a8-4f33-a635-409e218e40bf.json

2 个答案:

答案 0 :(得分:1)

您必须创建一个空的configuration.json文件。 Github Google Issue

请按照以下设置步骤正确进行身份验证。

  

第1步:开启云端硬盘API

     
      
  1. 使用此向导可在Google Developers Console中创建或选择项目,并自动启用API。单击继续,然后转到凭据。

  2.   
  3. 在“将凭据添加到项目”页面上,单击“取消”按钮。

  4.   
  5. 在页面顶部,选择OAuth许可屏幕标签。选择电子邮件地址,如果尚未设置,请输入产品名称,然后单击“保存”按钮。

  6.   
  7. 选择“凭据”选项卡,单击“创建凭据”按钮,然后选择“OAuth客户端ID”。

  8.   
  9. 选择应用类型其他,输入名称" Drive API快速入门",然后点击创建按钮。

  10.   
  11. 单击“确定”关闭生成的对话框。

  12.   
  13. 点击客户端ID右侧的file_download(下载JSON)按钮。

  14.   
  15. 将此文件移至您的工作目录并将其重命名为client_secret.json。

  16.   

文档:https://developers.google.com/drive/v3/web/quickstart/python

<强>更新

显然,argparse与Jupyter之间存在冲突[Reference]

和oauth2client正在使用argparse Github Code Link

我自己没有使用过Jupyter,但如果可以,请在没有Jupyter的情况下独立使用google驱动器api代码。

答案 1 :(得分:0)

只需复制您的凭据文件,然后粘贴到c驱动器的同一文件夹中即可。