在没有文件的情况下创建 YAML 文档的正确方法是什么?

What's the correct way to create a YAML document without a file?

我想在 python 程序(使用 PyYAML)中从头开始创建一个 YAML 文件,以便在 HTTP 请求正文中发送它。我在 PyYAML docs 中找到的最接近的是:

import yaml
document = """
  a: 1
  b:
    c: 3
    d: 4
"""
yaml.load(document)
send_req(document)

但是,我发现它 丑陋 并且不太易于维护,所以我希望能够做这样的事情:

document = {'a': 1, 'b': {'c': 3, 'd': 4}}
yaml.load(document)
send_req(document)

所以我可以用编程的方式修改它的结构,用变量等等。

如何从 python 对象结构创建 YAML 文档?

我想你想要的是yaml.dump

document = {'a': 1, 'b': {'c': 3, 'd': 4}}
print(yaml.dump(document))
>>> a: 1
b: {c: 3, d: 4}

对于简单的 Python 对象,您甚至可以直接序列化 .__dict__

class MyClass(object):
    def __init__(self, a, b):
        self.a = a
        self.b = b

my_obj = MyClass(1, 2)
print(yaml.dump(my_obj.__dict__))
>>> {a: 1, b: 2}