Azure Pipeline中如何列出Dataset对象的文件?两种尝试方法均报错
解决Azure Pipeline构建中列出Dataset文件的报错问题
你的两个方法分别存在以下问题,对应的解决办法如下:
方法1错误原因及修正
dataset.as_mount()返回的是DatasetConsumptionConfig配置对象,并非实际的文件路径,直接转成字符串传给os.listdir()肯定找不到目录。这种方式本就不适用于直接获取文件列表。
方法2错误原因及修正
挂载(mount)依赖libfuse库,仅支持Linux/Unix类系统。如果你的Azure Pipeline构建代理用的是Windows系统,就会触发这个报错。
可行方案1:下载数据集到本地(跨系统兼容)
不需要挂载,直接把数据集下载到构建代理的本地目录,再列出文件,Windows和Linux代理都能用:
from azureml.core import Workspace, Dataset import os ws = Workspace.from_config() dataset = Dataset.get_by_name(ws, "<dataset-name>") # 指定下载目录,用当前工作目录下的子文件夹 download_dir = os.path.join(os.getcwd(), "temp_dataset") # 下载数据集,覆盖已存在的文件 dataset.download(target_path=download_dir, overwrite=True) # 列出下载后的文件 print("Dataset files:") print(os.listdir(download_dir))
可行方案2:改用Linux代理并安装libfuse
如果数据集过大不想下载,可将Pipeline的构建代理切换为Linux,并在执行Python脚本前安装libfuse。在Pipeline的YAML中添加以下步骤:
steps: - script: | sudo apt-get update sudo apt-get install -y libfuse2 displayName: '安装libfuse依赖' - task: PythonScript@0 inputs: scriptSource: 'filePath' scriptPath: '你的脚本路径.py'
之后再运行你方法2的代码即可正常挂载并列出文件。
内容的提问来源于stack exchange,提问作者arush1836
相关产品推荐
相关产品推荐

