从云功能访问谷歌云存储(无需下载)



我正在运行一个谷歌云函数,该函数访问excel文件的谷歌云存储桶。我的目标是读取文件并对其进行一些计算,但是否可以不将文件下载到/tmp文件夹?我尝试过的东西:

storage_client = storage.Client()
file_obj = storage_client.get_bucket(‘bucketname’).get_blob('filename.xlsx')

excel_file = None
file_obj.download_to_file(excel_file)
wb = openpyxl.load_workbook(excel_file)

一开始我以为我可以获得一个文件对象,但后来我读到错误消息后,我意识到有人问我要一个文件路径,所以我必须下载到/tmp文件夹,这是我想避免的。

我也尝试过download_as_bytes(),但不幸的是openpyxl无法读取字节。

任何帮助/提示都将不胜感激:(

正如您在这个社区中看到的答案:

openpyxl.load_workbook的文档中,它说:

#:param filename: the path to open or a file-like object

因此,如果你有字节作为输入,你可以组装一个";原型对象";为了满足openpyxl.load_workbook的参数要求,它将工作,就像下面的例子:

from io import BytesIO
...
excel_file = None
file_obj.download_as_bytes(excel_file)
wb = load_workbook(filename=BytesIO(excel_file.read()))

最新更新