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

如何使用Azure ML SDK v2仅下载Azure作业结果中的指定单个文件?

解决Azure ML SDK v2下载单个作业输出文件失败的问题

问题原因

Azure ML SDK v2的ml_client.jobs.download()方法中,output_name参数仅支持指定作业定义的输出资产名称(比如你代码里的output_data),不能直接传入输出路径下的具体文件路径。当你设置output_name="output_data/file_test.txt"时,SDK会尝试查找一个名为output_data/file_test.txt的输出资产,但你的作业中并没有定义这个输出,因此不会触发下载操作。

解决方案

方案1:下载整个输出后提取目标文件

如果输出文件夹体积不大,可以先完整下载output_data,再提取所需文件:

import os
import shutil

download_path = "./downloaded_outputs"
os.makedirs(download_path, exist_ok=True)

# 下载整个output_data输出
ml_client.jobs.download(
    name=returned_job.name,
    download_path=download_path,
    output_name="output_data"
)

# 将目标文件移动到指定位置
source_file = os.path.join(download_path, "output_data", "file_test.txt")
target_file = os.path.join(download_path, "file_test.txt")
shutil.move(source_file, target_file)

# 可选:删除原下载的文件夹
shutil.rmtree(os.path.join(download_path, "output_data"))

方案2:直接通过Blob Storage下载单个文件

若输出文件夹较大,不想下载全部内容,可以直接访问作业输出对应的存储容器,定位到目标文件下载:

import os
from azure.storage.blob import BlobServiceClient

# 获取作业output_data的详细信息
job_output = ml_client.jobs.get(name=returned_job.name).outputs["output_data"]

# 从输出URI解析存储信息
uri_components = job_output.uri.split("/")
storage_account = uri_components[2].split(".")[0]
container_name = uri_components[3]
target_blob_path = "/".join(uri_components[4:]) + "/file_test.txt"

# 初始化Blob客户端(使用默认Azure身份认证)
blob_service_client = BlobServiceClient(account_url=f"https://{storage_account}.blob.core.windows.net")
blob_client = blob_service_client.get_blob_client(container=container_name, blob=target_blob_path)

# 下载目标文件
save_path = "./downloaded_outputs/file_test.txt"
os.makedirs(os.path.dirname(save_path), exist_ok=True)
with open(save_path, "wb") as file:
    file.write(blob_client.download_blob().readall())

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 22:55:02