如何消耗blob的文件?

0

的问题

我有一个问题,我上传阅读的文件谷歌储存。 当我想到再利用他们后来我得到blob文件。

在那之后我的损失就如何使用实际阅读文件。

from google.cloud import storage

import openpyxl

client = storage.Client()
new_bucket = client.get_bucket('bucket.appspot.com')

#get blob object:
o = new_bucket.get_blob('old_version.xlsx')

# <Blob: blobstorage.appspot.com, old_version.xlsx, 16372393787851916>

#download the object

bytes_version = o.download_as_bytes()

#load it to openpyxl library
wb = load_workbook(filename = bytes_version ,data_only=True)

InvalidFileException: openpyxl does not support b'.xmlpk\x05\x06\x00\x00\x00\x00:\x00:\x00n\x10\x00\x00\xa6\x06\x01\x00\x00\x00' file format, please check you can open it with Excel first. Supported formats are: .xlsx,.xlsm,.xltx,.xltm

最终目标将是下载的文件为目和阅读它们与openpyxl库(它的工作与原始文件,但后储存在云没有找到办法让我的阅读和文件)。

谢谢帮忙!

编辑:增加目前代码

blob excel google-cloud-storage python
2021-11-18 15:48:38
1

最好的答案

2

你的代码阅读云存储blob进入存储器:

bytes_version = o.download_as_bytes()

然后试图加载工作簿从存储器:

wb = load_workbook(filename = bytes_version ,data_only=True)

然而, load_workbook() 方法预计的文件或类似文件的对象。 使用一个字节串与文件的内容不支持.

openpyxl.读者。excel。load_workbook(名,read_only=False, keep_vba=False,data_only=False,keep_links=True)

参数:

filename (string or a file-like object open in binary mode c.f., zipfile.ZipFile) – the path to open or a file-like object

文档

方案:

保存云存储blob到地磁盘文件,然后指定的文件,名称为 load_workbook():

o.download_to_filename('/path/to/file')
wb = load_workbook(filename = '/path/to/file' ,data_only=True)

注:替代 /path/to/文件 与一个真正的道路上你的系统和与 .阅读 文件的扩展。

2021-11-19 11:28:56

谢谢你约翰*、理解问题,我可以载入该文件从存在这种情况下绝对错误的。 再次感谢!
Tony

其他语言

此页面有其他语言版本

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................