【问题标题】:Drive API Error Python: FileNotFoundError 'credentials.json'驱动器 API 错误 Python:FileNotFoundError 'credentials.json'
【发布时间】:2022-01-11 19:54:53
【问题描述】:

对于编程方面的一切都是全新的!请像我一无所知一样对待我。我遵循了 Python 的 Google Docs API 快速入门。我收到了错误

FileNotFoundError: [Errno 2] 没有这样的文件或目录:'credentials.json'

据我了解,这是因为文件路径不正确,但我不知道如何修复它。任何帮助深表感谢。这是源代码。

from __future__ import print_function

import os.path

from google.auth.transport.requests import Request
from google.oauth2.credentials import Credentials
from google_auth_oauthlib.flow import InstalledAppFlow
from googleapiclient.discovery import build
from googleapiclient.errors import HttpError

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

# The ID of a sample document.
DOCUMENT_ID = '195j9eDD3ccgjQRttHhJPymLJUCOUjs-jmwTrekvdjFE'


def main():
"""Shows basic usage of the Docs API.
Prints the title of a sample document.
"""
creds = None
# 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.
if os.path.exists('token.json'):
    creds = Credentials.from_authorized_user_file('token.json', 
SCOPES)
# If there are no (valid) credentials available, let the user 
log in.
if not creds or not creds.valid:
    if creds and creds.expired and creds.refresh_token:
        creds.refresh(Request())
    else:
        flow = InstalledAppFlow.from_client_secrets_file(
            'credentials.json', SCOPES)
        creds = flow.run_local_server(port=0)
    # Save the credentials for the next run
    with open('token.json', 'w') as token:
        token.write(creds.to_json())

try:
    service = build('docs', 'v1', credentials=creds)

    # Retrieve the documents contents from the Docs service.
    document = 
service.documents().get(documentId=DOCUMENT_ID).execute()

    print('The title of the document is: 
{}'.format(document.get('title')))
except HttpError as err:
    print(err)


if __name__ == '__main__':
main()}

【问题讨论】:

  • 文件存储在哪里?项目中有很多文件夹吗?
  • 文件存储在“我的文件/Linux文件/quickstart.py”(quickstart是我命名的。我想使用这个功能的项目存储在“我的文件/Linux文件/维护应用程序”
  • 您尝试过以下解决方案吗?它的第一部分在SCOPES 行下添加它,而另一部分flow 已经在您只需要修改它的代码上。另外,为什么不将所有文件都放在与快速入门相同的文件夹下?

标签: python python-3.x google-api google-drive-api google-api-python-client


【解决方案1】:

我认为您需要添加文件的绝对路径。尝试使用这样的变量。

CLIENT_SECRET_FILE = r'C:\Users\ME\client_secret.json'

然后将其添加到您的代码中。

flow = InstalledAppFlow.from_client_secrets_file(
        CLIENT_SECRET_FILE , SCOPES)

【讨论】:

  • 我应该在哪一行代码中添加这两行?我应该使用我上面评论的文件路径吗?我不确定它是如何工作的,因为我使用的是 chromebook。
【解决方案2】:

如果您复制文件/项目文件夹,硬编码链接将会丢失。 尝试获取当前目录并将该信息提供给查找 credentials.json 的变量。 (该文件在工作目录中对吗?)

    if not creds or not creds.valid:
    if creds and creds.expired and creds.refresh_token:
        creds.refresh(Request())
    else:
        CURR_DIR = os.path.dirname(os.path.realpath(__file__))
        credential_file=str(CURR_DIR)+'/credentials.json'  #may need backslash in windows, IDK
        flow = InstalledAppFlow.from_client_secrets_file(
            credential_file, SCOPES)
        creds = flow.run_local_server(port=0)

【讨论】:

    猜你喜欢
    • 2018-04-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-12
    • 2019-06-21
    • 1970-01-01
    相关资源
    最近更新 更多