如何通过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
相关产品推荐
相关产品推荐

