pyYAML,预期NodeEvent,但得到DocumentEndEvent

2024-04-28 03:47:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图转储一个自定义对象,这是一个对象列表。因此,我重写了YAMLOBject类的to_yaml方法,我将我的类设置为从中继承:

@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方法时,将使用正确的数据正确地创建输出文件:

^{pr2}$

但在执行的最后我得到了一个EmitterError: expected NodeEvent, but got DocumentEndEvent()

我认为这与没有正确关闭YAML文档有关,因为当我调试代码时,我得到了save_to_file文件,这些文件在文档末尾缺少新行。会吗?还是别的什么?在


Tags: 文件to对象方法nameyamldatasave