我正在尝试转储自定义对象,这是一种对象列表。所以我覆盖了我设置我的类继承自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
文件缺少文档末尾的新行。可能吗?或者是别的什么?
答案 0 :(得分:1)
您的代码无效,因为dumper.represent
不会返回任何内容。您想要使用dumper.represent_data
。