You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Python连接Azure容器中仅有权限访问的子文件夹?

仅访问Azure Blob特定子文件夹的Python连接方案

当你的SAS URL直接指向ADLS Gen2容器下的特定子文件夹时,无需使用BlobServiceClient或ContainerClient操作整个容器,DirectoryClient是最适配的工具,以下是具体实现方式:

1. 安装依赖包

先确保安装Azure Storage Blob SDK:

pip install azure-storage-blob

2. 直接用SAS URL初始化DirectoryClient

这是最直接的方式,SAS URL已经包含了子目录的权限信息:

from azure.storage.blob import DirectoryClient

# 替换为你的SAS URL
sas_url = "https://storageaccount.blob.core.windows.net/container/folder/subfolder?fancy_token"
dir_client = DirectoryClient.from_connection_string(conn_str=sas_url)

# 列举子目录下的所有Blob
for blob_item in dir_client.list_blobs():
    print(f"Blob名称: {blob_item.name}")

# 上传本地文件到该子目录
local_file_path = "本地文件路径.txt"
with open(local_file_path, "rb") as file_data:
    dir_client.upload_blob(name="上传后的文件名.txt", data=file_data)

# 下载子目录中的Blob到本地
downloaded_blob = dir_client.download_blob("目标Blob名称.txt")
with open("本地保存路径.txt", "wb") as file_data:
    downloaded_blob.readinto(file_data)

3. 可选:通过BlobServiceClient派生DirectoryClient

如果需要复用服务客户端实例,也可以用SAS URL初始化BlobServiceClient,再获取目标子目录的客户端:

from azure.storage.blob import BlobServiceClient

sas_url = "https://storageaccount.blob.core.windows.net/container/folder/subfolder?fancy_token"
service_client = BlobServiceClient.from_connection_string(conn_str=sas_url)

# 容器名称和子目录路径需与SAS URL中的对应
dir_client = service_client.get_directory_client(container="container", directory="folder/subfolder")

# 后续操作与上述一致,比如列举Blob、上传下载等

注意事项

  • 确认SAS令牌拥有目标子目录的对应权限(如r读、w写、l列举等),权限不足会触发403错误
  • 若仅需操作单个Blob,可直接用BlobClient.from_connection_string(),将SAS URL拼接上目标Blob的完整路径即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 20:42:15