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

Python读取嵌套YAML中roleprivs下的code与access字段的方法

解决方案

核心提取逻辑

你已经获取到了roleprivs节点下的所有权限项键名,直接通过层级访问就能拿到对应code和access字段,遍历逻辑修改如下:

try:
    with open(yaml_file, 'r') as f:
        result = yaml.safe_load(f)
    strRoleID = str(role)
    url = baseURL+"/api/roles/"+strRoleID+"/update-permission"
    # 直接遍历roleprivs的键值对更方便,不用单独取keys
    for priv_name, priv_config in result['roleprivs'].items():
        # 提取需要的两个字段
        code = priv_config['code']
        access = priv_config['access']
        # 打印验证可自行删除
        print(f"权限名:{priv_name},code:{code},access:{access}")
        # 调用更新接口
        payload = json.dumps({
            "permissionCode": code,
            "access": access
        })
        headers = {'Content-Type': 'application/json','Authorization': 'Bearer ' +bearerToken}
        response = requests.request("PUT", url, verify=False, headers=headers, data=payload)
        # 可选增加响应校验,方便排查错误
        if response.status_code not in [200,204]:
            logger.error(f"更新权限{code}失败,状态码:{response.status_code},返回内容:{response.text}")
except Exception as e:
    logger.error(f"处理{yaml_file}的权限更新逻辑失败", exc_info=True)

现有代码优化建议

  • 同一个YAML文件不需要重复读取3次,第一次读取后把result变量存下来,后续创建角色、取角色ID、更新权限都复用这个变量即可,减少IO开销
  • 原有代码中url的赋值被放在了读取YAML失败的except块中,正常读取成功的场景下url不会被赋值,会直接报错,注意调整逻辑块的缩进
  • 调用接口后建议增加响应状态码判断,避免静默失败无法排查问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 03:24:03