Azure新手求助:如何在Azure ML Studio Notebook中访问Blob存储Datastore
在Azure ML Studio Notebooks中访问Blob Datastore内的图片文件
前提准备
确保Notebook使用的环境已安装azureml-sdk(Azure ML Studio默认环境已预装,无需额外安装)
步骤1:连接到Azure ML Workspace
通过Workspace配置文件自动连接到当前Notebook所属的Workspace:
from azureml.core import Workspace ws = Workspace.from_config()
步骤2:获取目标Datastore
替换your_datastore_name为你创建的Datastore名称,获取对应的Datastore对象:
from azureml.core import Datastore datastore_name = "your_datastore_name" datastore = Datastore.get(ws, datastore_name)
方法1:挂载Datastore到Notebook文件系统(类似Colab挂载Drive)
将Datastore挂载到Notebook的本地文件路径,之后即可像操作本地文件一样访问图片:
# 指定挂载路径,可自定义 mount_point = '/mnt/blob_datastore' # 执行挂载 datastore.mount(mount_point) # 示例:遍历并获取所有图片路径 import os image_extensions = ('.png', '.jpg', '.jpeg') image_paths = [ os.path.join(mount_point, fname) for fname in os.listdir(mount_point) if fname.lower().endswith(image_extensions) ] # 读取单张图片示例 from PIL import Image img = Image.open(image_paths[0])
用完后可取消挂载释放资源:
datastore.unmount(mount_point)
方法2:创建FileDataset按需读取(适合大数据量场景)
无需挂载,通过Dataset API直接按需读取文件,避免占用Notebook本地存储,适合处理12000+张这类大数据量:
from azureml.core.dataset import Dataset # 从Datastore创建FileDataset,`**/*`匹配所有子目录下的文件,可根据你的图片路径调整 dataset = Dataset.File.from_files(path=(datastore, '**/*')) # 获取所有文件的路径列表 file_paths = dataset.to_path() # 按需读取单张图片示例 from PIL import Image import io # 读取列表中第一个文件 with dataset.open(file_paths[0]) as f: img_data = io.BytesIO(f.read()) img = Image.open(img_data)
如果需要批量读取,可结合循环或并行处理,比如:
# 批量读取前10张图片 for path in file_paths[:10]: with dataset.open(path) as f: img = Image.open(io.BytesIO(f.read())) # 执行你的图像处理逻辑
注意事项
- 确保Datastore的权限配置正确(创建时已通过SAS密钥/服务主体授权的话无需额外操作)
- Compute Instance有临时存储配额,挂载大体积数据时优先选择Dataset方式
- 测试阶段可使用
dataset.take(10)获取少量文件验证逻辑,避免一次性加载全量数据
内容的提问来源于stack exchange,提问作者Aditya Shah
相关产品推荐
相关产品推荐

