Python Pyaml,应为NodeEvent,但得到DocumentEndEvent

Python Pyaml,应为NodeEvent,但得到DocumentEndEvent,python,yaml,pyyaml,Python,Yaml,Pyyaml,我试图转储一个自定义对象,这是一种对象列表。因此,我将YAMLOBject类的方法重写为_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_dic

我试图转储一个自定义对象,这是一种对象列表。因此,我将
YAMLOBject
类的
方法重写为_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
方法时,将使用正确的数据正确创建输出文件:

if save_to_file:
    with open(save_to_file, 'w') as f:
        yaml.dump(all_passages, f, default_flow_style=False)
但在执行结束时,我得到了一个
EmitterError:预期为NodeEvent,但得到了DocumentEndEvent()


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

您的代码不起作用,因为
转储程序.represente
不返回任何内容。您想使用
转储程序。表示数据

如果我使用
转储程序。表示映射(cls.yaml\u标记,passage\u list\u dict)
它可以工作(但它会在文件顶部添加我希望避免的标记)。