python - 我们可以使用python以读取模式在谷歌驱动器中打开文件吗?
问题描述
我想以读取模式读取谷歌驱动器中的文件。我们可以使用 Drive-API 以读取模式打开它而不是下载它吗?
我的文件夹结构
user
>1
>1.json
在这个例子中,我已经到达了我的 json 文件,现在我需要读取 .json 中的文件内容,而不是下载。通常,我们with open('1.json') as f:
在 python 中使用,但我如何使用 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
}
推荐阅读
- realm - Keyclock-gatekeeper/louketo-proxy 事件未立即传播到所有客户端
- node.js - 用于 PDF 的 puppeteer 的服务器端渲染或用于受保护/安全站点的 Angularjs 类型应用程序的图像屏幕截图(推送 dom
- flutter - Flutter - 如何为平台(Android、iOS、Web)使用条件编译?
- sharepoint - Graph API:如果驱动器未知,则按 ID 获取 Sharepoint 驱动器项
- javascript - 反应大日历根本不显示或加载
- coq - Coq 自动策略失败
- bash - 如何在命令行上强制解释为关键字而不是别名?
- java - 使用 csv 文件时输出错误
- powerbi - 如何引用 DAX 变量的列?
- neo4j - 如何使 Neo4J Enterprise 备份工作?