如果YAML键没有值(而不是None),加载时出错?

时间:2017-09-12 22:31:44

标签: python-3.x yaml pyyaml

我有一个YAML文件,其中包含未知数量的“图层”,因此当我将其加载到Python字典时,它将成为嵌套字典。

我不想在YAML文件中允许没有值的键。我想要:

    如果缺少值,则
  • 会导致yaml.load()期间出现错误,或
  • 识别生成的嵌套字典中的所有None值。

import yaml
with open(input_path, "r") as yaml_file:
    my_dict = yaml.load(yaml_file)

1 个答案:

答案 0 :(得分:2)

您可以重新定义Parser的{​​{1}}方法以引发错误:

process_empty_scalar

如果您将作业注释为import yaml yaml_str = """\ - 1 - - 2 - - 3 """ def pes(*args, **kw): raise NotImplementedError yaml.parser.Parser.process_empty_scalar = pes data = yaml.safe_load(yaml_str) print(data) ,则上述错误会引发错误。

请注意:

    YAML中的
  • 层并不一定意味着将形成python .process_empty_scalar
  • 您使用的dict被记录为不安全且几乎保证不合适。