python - pyYAML,期望 NodeEvent,但得到 DocumentEndEvent

标签 python yaml pyyaml

我正在尝试转储一个自定义对象,这是一种对象列表。所以我覆盖了 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 方法时,会使用正确的数据正确创建输出文件:

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 未返回任何内容。您想改用 dumper.represent_data

关于python - pyYAML,期望 NodeEvent,但得到 DocumentEndEvent,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42612264/

相关文章:

python - 为什么 Python 认为 bool 值是整数?

python - 使用向量叉积隐藏 3D 人脸

python - 循环遍历子字符串的所有注释

Rmarkdown : different output folders, 共享库

python - 如何在文件中写入 YAML 格式的数据?

python - 我可以在 Python 中查询 YAML 数据集吗?

python - 如何将 iPython 探查器 %%prun -r 的结果分配给变量?

google-app-engine - 解析 yaml 文件时出错 : mapping values are not allowed here

character-encoding - 如何在Yaml文件中设置字符编码

python-3.x - 使用 Python 更改 YAML 中的特定变量