首页 > 解决方案 > 我们可以使用python以读取模式在谷歌驱动器中打开文件吗?

问题描述

我想以读取模式读取谷歌驱动器中的文件。我们可以使用 Drive-API 以读取模式打开它而不是下载它吗?

我的文件夹结构

user
    >1 
      >1.json

在这个例子中,我已经到达了我的 json 文件,现在我需要读取 .json 中的文件内容,而不是下载。通常,我们with open('1.json') as f:在 python 中使用,但我如何使用 DRIVE API 读取和存储内容

标签: pythongoogle-drive-api

解决方案


您要问的是不可能的,如果不下载实际文件,您将无法读取文件的信息。如果您考虑一下,您会发现能够在不实际访问计算机的情况下准备好字节是没有意义的。

如果您的意思不是创建实际文件,则可以尝试使用io模块并将其存储在内存中。

实际上在谷歌文档中有一些例子:

file_id = '0BwwA4oUTeiV1UVNwOHItT0xfa2M'
request = drive_service.files().get_media(fileId=file_id)
fh = io.BytesIO()
downloader = MediaIoBaseDownload(fh, request)
done = False
while done is False:
    status, done = downloader.next_chunk()
    print "Download %d%%." % int(status.progress() * 100)

在这种情况下,我们request使用get_media()方法创建而不执行它,然后我们将请求引入到MediaIoBaseDownload,该类负责将数据块(如果文件很大)下载到此代码片段中的io.Base对象fh.


现在我考虑了一下,在这种情况下,当文件足够小时,您可能只需执行 get_media 请求,而无需分块下载。

所以可能在你的情况下只需执行以下代码

    service = build('drive', 'v3', credentials=creds)

    file_id = "<your file ID> "
    response = service.files().get_media(fileId=file_id).execute()

    print(response)

{

乔拉:“悲伤”,

SaaS:123

}


推荐阅读