gpt4 book ai didi

python - AZURE 函数从 AZURE BLOB 读取 XLSX

转载 作者:行者123 更新时间:2023-12-03 02:24:21 28 4
gpt4 key购买 nike

我想利用 AZURE Function 应用从 AZURE BLOB 存储读取 XLSX 文件。该函数应通过 REST API 调用来调用。我可以访问 blob 并下载文件,但我很难直接用 pandas 读取文件的内容。我正在搜索并尝试几个小时,但找不到解决方案。我最新的方法如下:

def main(req: func.HttpRequest) -> func.HttpResponse:
logging.info('Python HTTP trigger function processed a request.')

blob_service_client = BlobServiceClient.from_connection_string(CONNECTION_STRING)
container_client = blob_service_client.get_container_client(CONTAINERNAME)
blob_client = blob_service_client.get_blob_client(container = CONTAINERNAME, blob=BLOBNAME)
blob = BlobClient(ACCOUNT_URL, CONTAINERNAME, BLOBNAME)

#READ PRODUCTS FILE
blob_client.download_blob().readinto(LOCALFILENAME)
df = pd.read_excel(blob_client.download_blob())

在 MS 主页*上,有一个示例从 blob 下载文件并随后处理它,但由于我正在使用函数应用程序,如果我没有丢失,首先下载文件是没有意义的任何东西...

* https://learn.microsoft.com/en-us/azure/storage/blobs/storage-quickstart-blobs-python

blob 的自动完成功能为我提供了以下选项,但它们也没有真正的帮助: Autocomplete suggestions for blob

根据我尝试读取文件的方式,错误消息会有所不同。当前的是:

System.Private.CoreLib: Exception while executing function: Functions.TrainProductModel. System.Private.CoreLib: Result: Failure
Exception: AttributeError: 'str' object has no attribute 'write'

但我认为我的方法实际上存在根本性错误。期望的结果是将文件直接读入 pandas 表中。

感谢任何支持,因为这阻碍了我的硕士论文的进展:/

最佳答案

Pandas本身不具备解析xlsx文件的能力。 Pandas根据外部库xlrd解析xlsx文件。而且你不应该安装高版本的xlrd,因为高版本取消了对xlsx文件的支持(仅支持xls文件),推荐版本是1.2.0(这个对我来说有效)。

下面是我的代码:

import os, uuid
from azure.storage.blob import BlobServiceClient, BlobClient, ContainerClient, __version__
import pandas as pd

CONNECTION_STRING = "DefaultEndpointsProtocol=https;AccountName=0730bowmanwindow;AccountKey=xxxxxx;EndpointSuffix=core.windows.net"
CONTAINERNAME = "test"
BLOBNAME = "test.xlsx"
LOCALFILENAME = "testx.xlsx"

blob_service_client = BlobServiceClient.from_connection_string(CONNECTION_STRING)
container_client = blob_service_client.get_container_client(CONTAINERNAME)
blob_client = blob_service_client.get_blob_client(container = CONTAINERNAME, blob=BLOBNAME)

#READ PRODUCTS FILE
f = open(LOCALFILENAME, "wb")
f.write(blob_client.download_blob().content_as_bytes())
f.close()
df = pd.read_excel(r''+LOCALFILENAME)
print(df)

它对我有用:

enter image description here

关于python - AZURE 函数从 AZURE BLOB 读取 XLSX,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67664384/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com