Python如何校验两个YAML文件中stage字段值是否匹配
Python实现YAML任务stage校验逻辑
前置依赖
首先需要安装YAML解析库:
pip install pyyaml
实现思路
- 分别读取两个YAML文件并解析为Python字典
- 提取需求配置中的目标
stage值 - 遍历任务配置的所有顶级键值对(自动适配动态的任务名称,无需预先知道任务名)
- 对每个任务判断是否包含
stage字段,若存在且与需求stage匹配,执行对应任务逻辑
注:对于未配置
stage字段的任务,可根据业务需求调整逻辑,默认示例中直接跳过
完整代码示例
import yaml def load_yaml(file_path: str) -> dict: """加载YAML文件为字典""" with open(file_path, 'r', encoding='utf-8') as f: return yaml.safe_load(f) def filter_and_run_jobs(job_config_path: str, req_config_path: str): # 加载两个配置文件 job_config = load_yaml(job_config_path) req_config = load_yaml(req_config_path) # 提取需求的stage值 target_stage = req_config['requirements']['stage'] # 遍历所有任务(顶级键为动态任务名,直接用items()遍历即可) for job_name, job_params in job_config.items(): # 只处理配置了stage且stage匹配的任务 job_stage = job_params.get('stage') if job_stage == target_stage: print(f"匹配到任务:{job_name},开始执行") # 这里写你的任务执行逻辑,比如调用对应任务函数 # run_job(job_name, job_params) else: print(f"跳过任务:{job_name},stage不匹配或未配置stage") if __name__ == "__main__": # 替换为你的实际文件路径 filter_and_run_jobs("jobs.yaml", "requirements.yaml")
基于示例配置的运行结果
你提供的示例中需求stage为AV,运行后输出如下:
匹配到任务:jobx,开始执行 跳过任务:joby,stage不匹配或未配置stage 跳过任务:jobxyz,stage不匹配或未配置stage
内容的提问来源于stack exchange,提问作者Newone90
相关产品推荐
相关产品推荐

