尝试在 python 中使用 yaml.load 失败

Trying to use yaml.load in python fails

我正在尝试了解 yaml.load() 的用法,但即使是 运行 这个简单的代码也不适合我:

import yaml
document = """
  a: 1
  b:
    c: 3
    d: 4
"""
print yaml.dump(yaml.load(document), default_flow_style=False)

当我执行此脚本时出现以下错误 - AttributeError: 'module' object has no attribute 'dump'

此代码取自 PyYAML 文档 (http://pyyaml.org/wiki/PyYAMLDocumentation)。

我在这里错过了什么?我如何学习如何在 Python 中使用 YAML?

您调用了您的示例 yaml.py,因此您的测试程序是使用 import yaml 语句导入的,它没有 dump 例程。 只需将 yaml.py 重命名为 test_yaml.py.

您还应该使用:

import sys

yaml.dump(yaml.load(document, sys.stdout, default_flow_style=False)

因为没有提供流作为 dump() 的第二个参数,导致输出首先写入 StringIO() 对象,然后由 .getvalue() 在该对象上检索,然后写到sys.stdout。直接做后者更快