You need to enable JavaScript to run this app. Python从Blob存储下载Blob报不存在错误及托管身份连接方案咨询
优惠活动
大模型
产品
解决方案
定价
更多

Python从Blob存储下载Blob报不存在错误及托管身份连接方案咨询

报错核心原因排查

首先明确:你能正常拿到blob_client实例根本不能证明路径、权限配置正确——因为get_blob_client()方法只是在本地根据传入的参数初始化一个客户端代理对象,全程不会和服务端发起交互,自然不会校验目标Blob的真实存在性,所有校验逻辑都会在调用download_blob()这类实际请求服务端的方法时才触发。
具体触发“指定的Blob不存在”报错的常见场景:

  • 路径匹配错误:Blob Storage的对象路径是严格大小写敏感的,且get_blob_client()需要传入相对于容器根目录的完整路径,不是仅传文件名。比如如果你的TEST.xlsx实际存在于容器内的excel/源文件/子目录下,只传TEST.xlsx就会直接报不存在;哪怕路径差一个大小写,比如实际存的是test.xlsx而代码写的TEST.xlsx,也会触发报错。
  • 权限配置不匹配:Blob Storage有个安全设计:对于没有访问权限的请求,服务端不会返回“权限不足”的提示,而是统一返回“资源不存在”的错误,避免恶意用户通过枚举路径探测存储结构。这种场景下哪怕路径完全写对,只要托管身份没有目标容器的读取权限,也会报一样的错。
  • 存储配置不匹配:如果存储账户开了Blob软删除、版本管理功能,当前代码默认访问的是Blob的最新活跃版本,如果最新版本已经被删除,软删除的历史版本没有开通对应访问权限的话,也会触发不存在的报错。
托管身份场景的正确实现流程

按照下面的逻辑调整代码,就能定位并解决问题:

  1. 初始化服务端连接时优先用枚举校验的方式验证路径和权限,不要直接跳过校验开始下载:
from azure.identity import DefaultAzureCredential
from azure.storage.blob import BlobServiceClient
import pandas as pd

# 托管身份凭据初始化:自动适配本地Azure CLI登录、Azure虚拟机/函数/容器托管身份等场景
default_credential = DefaultAzureCredential()
# 存储账户URL严格按照https://<存储账户名>.blob.core.windows.net格式填写
blob_service_client = BlobServiceClient(
    account_url="https://<你的存储账户名>.blob.core.windows.net",
    credential=default_credential
)

# 获取目标容器客户端
container_client = blob_service_client.get_container_client("xx-xx-data")

# 关键校验步骤:枚举容器内所有Blob的真实路径,打印出来和你要下载的文件路径做比对
print("目标容器内的Blob路径列表:")
for blob in container_client.list_blobs():
    print(blob.name)
  1. 如果上面的枚举步骤能正常打印出所有Blob的路径,说明托管身份的权限配置是正常的,只需要把你代码里get_blob_client()传入的路径替换成打印出来的真实完整路径即可。
  2. 如果枚举步骤就报错或者列不出目标文件,需要检查托管身份的权限配置:确认给对应的托管身份分配了存储 Blob 数据读取者角色,且角色分配的范围精准覆盖到你要访问的目标容器,不要只把范围设到存储账户层面避免权限继承失效。
  3. 确认路径和权限都没问题后,再执行下载和读取逻辑:
# 替换为枚举步骤确认的真实Blob路径
blob_client = container_client.get_blob_client("打印出来的目标文件完整路径")
downloaded_blob = blob_client.download_blob()
df = pd.read_excel(downloaded_blob.content_as_bytes(), sheet_name='Test', skiprows=2)

内容的提问来源于stack exchange,提问作者Kelly

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.22 14:24:02