1

我在服务器上运行了一个 python 脚本,我需要从我的 GoogleDrive 获取一个 json 文件。我想使用 GoogleDrive API 来获取文件,我知道文件的名称、位置和 ID,但我只能找到将文件下载到存储的代码示例。json-content 应该是我脚本中的一个字典,并且不能将文件下载到存储中。我是 Python 和 GoogleDrive API 的新手,所以我不知道如何自己管理它。这是我关注的网站:https ://www.thepythoncode.com/article/using-google-drive--api-in-python

我希望你能帮助我,因为我真的需要它。提前致谢。

4

1 回答 1

3

我相信你的目标如下。

  • 您想直接将文件下载到内存中,而无需使用 python 将数据创建为文件。
    • I need to get a json-file from my GoogleDrive.,您要下载的文件是除 Google Docs 文件(电子表格、文档、幻灯片等)之外的文件。在这种情况下,它是一个文本文件。
  • 您已经能够将 Drive API 与 googleapis for python 一起使用。
  • 您正在使用来自https://www.thepythoncode.com/article/using-google-drive--api-in-python的授权脚本。

在这种情况下,为了将文件内容检索到内存中,我建议使用requests. 为此,从credsof中检索访问令牌get_gdrive_service()

为了获取文件内容,使用“Files:get”的方法,加入查询参数alt=media

示例脚本:

file_id = "###"  # Please set the file ID you want to download.

access_token = creds.token
url = "https://www.googleapis.com/drive/v3/files/" + file_id + "?alt=media"
res = requests.get(url, headers={"Authorization": "Bearer " + access_token})
obj = json.loads(res.text)
print(obj)
  • 在上面的脚本中,credsofcreds.token来自get_gdrive_service().
  • 根据您的问题,我认为您要下载的文件是 JSON 数据。所以在上面的脚本中,下载的数据被解析为 JSON 对象。
  • 在这种情况下,请导入jsonrequests.

笔记:

  • 当返回的内容是 JSON 数据时,我觉得你也可以res.json()res.text. 但是当JSONDecodeError发生时,请检查 的值res.text

参考:

于 2020-09-05T01:46:54.360 回答