pyYAML,期望NodeEvent,但得到了DocumentEndEvent

时间:2017-03-05 18:29:22

标签: python yaml pyyaml

我正在尝试转储自定义对象,这是一种对象列表。所以我覆盖了我设置我的类继承自to_yaml类的YAMLOBject方法:

@classmethod
def to_yaml(cls, dumper, data):
    """ This methods defines how to save this class to a yml
    file """

    passage_list = []

    for passage in data:
        passage_dict = {
            'satellite': passage.satellite.name,
            'ground_station': passage.ground_station.name,
            'aos': passage.aos,
            'los': passage.los,
            'tca': passage.tca,

        }
        passage_list.append(passage_dict)

    passage_list_dict = {
        'passages': passage_list
    }

    return dumper.represent(passage_list_dict)

当我调用yaml.dump方法时,使用正确的数据正确创建输出文件:

if save_to_file:
    with open(save_to_file, 'w') as f:
        yaml.dump(all_passages, f, default_flow_style=False)

但在执行结束时,我得到EmitterError: expected NodeEvent, but got DocumentEndEvent()

我认为这与未正确关闭YAML文档有关,因为在我调试代码时,我收到的save_to_file文件缺少文档末尾的新行。可能吗?或者是别的什么?

1 个答案:

答案 0 :(得分:1)

您的代码无效,因为dumper.represent不会返回任何内容。您想要使用dumper.represent_data