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

如何在本地适配Azure Blob文件下载函数(替代Databricks的dbutils)

解决方案

问题根源

requests仅支持HTTP/HTTPS这类标准网络协议,wasbs://是Azure Blob Storage专属协议,因此直接用requests.get访问会触发协议不支持的错误。

本地实现步骤

1. 安装Azure Blob存储SDK

先安装Python依赖包:

pip install azure-storage-blob

2. 编写本地下载函数

从给定的wasbs URI中提取容器名、存储账户名和Blob路径前缀,再通过Azure SDK的匿名客户端访问公开可读的容器(无凭证说明该容器已开启公开访问权限):

from azure.storage.blob import BlobServiceClient
import os

def download_dataset(wasbs_uri, local_target_dir):
    # 解析wasbs格式URI
    stripped_uri = wasbs_uri.replace("wasbs://", "")
    container_name, rest = stripped_uri.split("@", 1)
    account_domain, blob_prefix = rest.split("/", 1) if "/" in rest else (rest, "")
    account_name = account_domain.replace(".blob.core.windows.net", "")

    # 初始化匿名Blob服务客户端
    account_url = f"https://{account_name}.blob.core.windows.net"
    blob_service_client = BlobServiceClient(account_url=account_url)
    container_client = blob_service_client.get_container_client(container_name)

    # 创建本地目标目录
    os.makedirs(local_target_dir, exist_ok=True)

    # 遍历并下载所有匹配前缀的Blob文件
    for blob_item in container_client.list_blobs(name_starts_with=blob_prefix):
        # 构建本地文件路径
        relative_file_path = blob_item.name[len(blob_prefix):] if blob_prefix else blob_item.name
        local_file_path = os.path.join(local_target_dir, relative_file_path)
        
        # 确保父目录存在
        os.makedirs(os.path.dirname(local_file_path), exist_ok=True)
        
        # 下载Blob到本地文件
        with open(local_file_path, "wb") as local_file:
            blob_data = container_client.download_blob(blob_item.name).readall()
            local_file.write(blob_data)
    
    print(f"数据集已全部下载至本地目录: {local_target_dir}")

# 使用示例
target_uri = "wasbs://course-resources@dalhussein.blob.core.windows.net/datasets/bookstore/v1/"
download_dataset(target_uri, "./local_bookstore_data")

3. 关键注意点

  • 该实现依赖目标Blob容器为公开可读状态,若容器是私有权限,需补充存储账户访问密钥或SAS令牌到客户端初始化逻辑中。
  • 若只需下载单个文件而非整个前缀路径下的内容,可修改list_blobs逻辑直接指定Blob名称。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 15:46:01