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

如何通过SAS URL下载外部Blob容器中的所有文件?

使用SAS URL下载外部Azure Blob容器内容到本地文件夹

既然你已经通过有效的SAS URL成功初始化了ContainerClient并列出Blob,完全不需要容器的连接字符串,直接基于现有ContainerClient就能实现批量下载,同时保留Blob的层级结构。

实现代码

from azure.storage.blob import ContainerClient
import os

# 替换为你的有效SAS URL
sas_url = r'[your_valid_sas_url]'
# 指定本地要保存的目标文件夹
local_target_folder = r'C:\your\local\destination\folder'

container = ContainerClient.from_container_url(sas_url)
blob_list = container.list_blobs()

for blob in blob_list:
    # 构建本地文件路径,保留Blob的虚拟目录结构
    local_file_path = os.path.join(local_target_folder, blob.name)
    # 自动创建必要的父目录
    os.makedirs(os.path.dirname(local_file_path), exist_ok=True)
    
    # 流式下载Blob到本地文件,适合大文件
    with open(local_file_path, 'wb') as local_file:
        download_stream = container.download_blob(blob.name)
        download_stream.readinto(local_file)
    
    print(f"完成下载:{blob.name}")

关键说明

  • os.makedirs(..., exist_ok=True):处理Blob带虚拟目录的场景,自动创建本地对应层级的文件夹,避免因目录不存在报错。
  • 流式下载:通过readinto方法直接将Blob数据流写入本地文件,无需先加载整个文件到内存,适合处理大体积Blob。
  • 全程仅依赖有效的SAS URL和ContainerClient,无需容器的连接字符串或账户密钥。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 09:30:25