从 Google Drive 获取文件而不将其下载到存储 - Python

Get file from GoogleDrive without downloading it to storage - Python

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

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

我相信你的目标如下。

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

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

为了获取文件内容,使用了“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)
  • 在上面的脚本中,creds.tokencreds 来自 get_gdrive_service()
  • 根据你的问题,我认为你要下载的文件是JSON数据。所以在上面的脚本中,下载的数据被解析为 JSON object.
  • 在这种情况下,请导入 jsonrequests

注:

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

参考: