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

Ton*_*res 4 python dictionary yaml pyyaml python-3.x

我已经搜索过,但没有找到太多这方面的信息。我正在编写一个 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)
Run Code Online (Sandbox Code Playgroud)

我得到的输出是:

- list:
  - 1
  - 2
  - 3
  name: name1
  type: doc
  value: 12
- list:
  - 1
  - 2
  - 3
  name: name2
  type: cpp
  value: 100
Run Code Online (Sandbox Code Playgroud)

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

- 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
Run Code Online (Sandbox Code Playgroud)

我尝试过放置\n和结尾字典,file_info.append('\n')在字典之间使用,用作None字典中的最后一个键,但到目前为止没有任何效果。任何帮助是极大的赞赏!

我正在使用 Pyyaml 5.4.1 和 Python 3.9。

nlt*_*lta 7

您可以一次转储一个对象,然后在每个对象后面换一个新行。

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