我想轉儲一個自定義對象,這是一種對象列表。所以我推翻從中設置我的類從繼承YAMLOBject
類的to_yaml
方法:pyYAML,預計NodeEvent,但得到DocumentEndEvent
@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
缺少文檔結尾處新行的文件。它會是嗎?或者是別的什麼?
如果我使用'dumper.represent_mapping(cls.yaml_tag,passage_list_dict)'它可以工作(但它會在文件頂部添加我想避免的標記)。 – SolidSnake