如何使用Python通过Blob SAS令牌/URL读取Azure存储CSV文件为DataFrame
读取Azure Blob存储CSV文件为DataFrame的Python实现
前置依赖
首先安装所需工具包:
pip install pandas azure-storage-blob
场景1:已有完整Blob SAS URL
SAS URL已内置权限校验信息,可直接通过Pandas读取:
import pandas as pd # 替换为你的CSV文件对应的Blob SAS URL blob_sas_url = "https://<存储账户名>.blob.core.windows.net/<容器名>/<文件路径>.csv?<SAS参数串>" df = pd.read_csv(blob_sas_url)
场景2:仅持有单独SAS令牌与Blob路径
使用Azure Blob SDK构造访问客户端,读取文件到内存后转DataFrame:
import pandas as pd from io import BytesIO from azure.storage.blob import BlobClient # 替换为你的实际配置 storage_account = "你的存储账户名称" container_name = "目标存储容器名称" csv_blob_path = "csv文件在容器内的完整路径,例如data/2024/xxx.csv" sas_token = "你的Blob SAS令牌(无需带开头的?符号)" # 初始化Blob访问客户端 blob_client = BlobClient( account_url=f"https://{storage_account}.blob.core.windows.net/", container_name=container_name, blob_name=csv_blob_path, credential=sas_token ) # 下载文件并转DataFrame with BytesIO() as stream: blob_client.download_blob().readinto(stream) stream.seek(0) df = pd.read_csv(stream)
注意事项
- SAS令牌需要提前配置Blob的读取权限,且在有效期内,否则会触发权限报错
- 如果CSV文件包含中文,可在
pd.read_csv中增加encoding='utf-8'或encoding='gbk'参数指定编码格式 - 大文件读取可增加
chunksize参数开启分块加载,避免内存溢出
内容的提问来源于stack exchange,提问作者user16628047
相关产品推荐
相关产品推荐

