使用python阅读Azure Blob

时间:2019-11-13 02:52:12

标签: python azure-functions azure-blob-storage azure-blob-trigger

我想将存储在Azure blob存储中的Excel文件读取到python数据框。我会用什么方法?

1 个答案:

答案 0 :(得分:1)

pandas包中有一个名为read_excel的函数,您可以将在线excel文件的url传递给该函数以获取excel表的数据框,如下图所示。

enter image description here

因此,您只需要生成带有sas令牌的excel blob的网址,然后将其传递给函数即可。

这是我的示例代码。注意:它需要安装Python软件包azure-storagepandasxlrd

# Generate a url of excel blob with sas token
from azure.storage.blob.baseblobservice import BaseBlobService
from azure.storage.blob import BlobPermissions
from datetime import datetime, timedelta

account_name = '<your storage account name>'
account_key = '<your storage key>'
container_name = '<your container name>'
blob_name = '<your excel blob>'

blob_service = BaseBlobService(
    account_name=account_name,
    account_key=account_key
)

sas_token = blob_service.generate_blob_shared_access_signature(container_name, blob_name, permission=BlobPermissions.READ, expiry=datetime.utcnow() + timedelta(hours=1))
blob_url_with_sas = blob_service.make_blob_url(container_name, blob_name, sas_token=sas_token)

# pass the blob url with sas to function `read_excel`
import pandas as pd
df = pd.read_excel(blob_url_with_sas)
print(df)

我用我的示例excel文件测试了以下代码,效果很好。

图1.我的Azure Blob存储的testing.xlsx容器中的示例excel文件test

enter image description here

图2。我的示例excel文件testing.xlsx

的内容

enter image description here

图3.我读取excel blob的示例Python代码的结果

enter image description here