如何使用 Pyyaml 在序列之间添加换行符?

How to add a newline between sequences with Pyyaml?

我已经搜索过了,但没有找到太多这方面的信息。我正在编写一个 Python 脚本来获取字典列表并将其转储到 yaml 文件中。例如,我有如下代码:

import yaml

dict_1 = {'name'  : 'name1',
          'value' : 12,
          'list'  : [1, 2, 3],
          'type'  : 'doc'
}

dict_2 = {'name'  : 'name2',
          'value' : 100,
          'list'  : [1, 2, 3],
          'type'  : 'cpp'
}

file_info = [dict_1, dict_2]

with open('test_file.yaml', 'w+') as f:
    yaml.dump(file_info, f)

我得到的输出是:

- list:
  - 1
  - 2
  - 3
  name: name1
  type: doc
  value: 12
- list:
  - 1
  - 2
  - 3
  name: name2
  type: cpp
  value: 100

当我真正想要的是这样的时候:

- list:
  - 1
  - 2
  - 3
  name: name1
  type: doc
  value: 12
                  ## Notice the line break here
- list:
  - 1
  - 2
  - 3
  name: name2
  type: cpp
  value: 100

我尝试将 \n 和字典的末尾放在字典之间,在字典之间使用 file_info.append('\n'),使用 None 作为字典中的最终键,但没有任何效果迄今为止。非常感谢任何帮助!

我正在使用 Pyyaml 5.4.1 和 Python 3.9.

您可以一次转储每个对象一个新行。

with open('test_file.yaml', 'w+') as f:
    for yaml_obj in file_info:
        f.write(yaml.dump([yaml_obj]))
        f.write("\n")