列出YAML节点

时间:2015-12-13 14:06:40

标签: python yaml pyyaml

我对YAML和Python都很陌生。我试图列出我的YAML文件中的所有键和值。但无法弄清楚如何做到这一点。 Appriciate帮助。

YAML文件

---
    Task_T0:
      -
       args:
            task_path: "..."
       executor:
            type: "T0"

    Task_T1:
      -
       args:
           task_path: "~/task_file"
       executor:
           type: "T1"
       data:
         params:
            p1: 0

我想列出所有节点(Task_T ...)。 这是尝试的,因为我无法找到任何API来执行此操作:

 parsed_task = yaml.safe_load(rendered_task)
 for task_obj in enumerate(parsed_task):
     path = task_obj[0]["args"]["task_path"]
     print("task path::" + path)

我收到此错误:

'int' object has no attribute '__getitem__'

如果我将我的代码修改为:

parsed_task = yaml.safe_load(rendered_task)
for task_obj in enumerate(parsed_task):
     path = task_obj["args"]["task_path"]
     print("task path::" + path)

然后我收到了这个错误:

tuple indices must be integers, not str

1 个答案:

答案 0 :(得分:1)

最后使用以下代码使其工作:

parsed_task = yaml.safe_load(task_file)
for task_obj in enumerate(parsed_task):
    name = task_obj[1]
    print("task name:" + name)

以上代码打印任务名称。 如果您想了解每项任务的更多细节,那么

parsed_task = yaml.safe_load(rendered_task)
for scenario_obj in enumerate(parsed_task):
    name = scenario_obj[1]
    print("scenario name:" + name)
    print(parsed_task[name][0]["args"]["task_path"])

上面的代码会打印每个节点的任务路径。