使用 python 读入 azure blob
Read in azure blob using python
我想将存储在 Azure blob 存储中的 excel 文件读取到 python 数据框。我会用什么方法?
pandas
包中有一个名为read_excel
的函数,你可以将在线excel文件的url传递给该函数来获取dataframe的exceltable,如下图
所以你只需要用 sas 令牌生成 excel blob 的 url,然后将它传递给函数。
这是我的示例代码。注意:它需要安装 Python 包 azure-storage
、pandas
和 xlrd
.
# 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. 我的示例 excel 文件 testing.xlsx
在我的 Azure Blob 存储 test
容器中
图 2. 我的示例 excel 文件的内容 testing.xlsx
图 3. 我的示例 Python 代码读取 excel blob
的结果
我想将存储在 Azure blob 存储中的 excel 文件读取到 python 数据框。我会用什么方法?
pandas
包中有一个名为read_excel
的函数,你可以将在线excel文件的url传递给该函数来获取dataframe的exceltable,如下图
所以你只需要用 sas 令牌生成 excel blob 的 url,然后将它传递给函数。
这是我的示例代码。注意:它需要安装 Python 包 azure-storage
、pandas
和 xlrd
.
# 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. 我的示例 excel 文件 testing.xlsx
在我的 Azure Blob 存储 test
容器中
图 2. 我的示例 excel 文件的内容 testing.xlsx
图 3. 我的示例 Python 代码读取 excel blob
的结果