首页 > 解决方案 > 在 Python 中,使用 ruamel.yaml 将字典转储到 Yaml 时如何将字典键值拆分为多行

问题描述

使用 ruamel.yaml 将字典转储到 YAML 文件时出现问题。

假设,这是我要转储的字典,其中键的值是字典列表。

data1 = "blabla-1"
data2 = "blabla-2"

theDict = {"write_files": [{'content': '| ' + data1,
                            'path': '/tmp/f1.txt'},
                           {'content': '| ' + data2,
                            'path': '/tmp/f2.txt'}
                           ]
                           }

这是我想要得到的结果:

write_files:
-   content: | 
        blabla-1
    path: /tmp/f1.txt
-   content: | 
        blabla-2
    path: /tmp/f2.txt

其中 dict 中“content”键的值被分成 2 行。

不幸的是,我得到了这个结果,其中“内容”键值与键所在的行位于同一行,并且单引号字符也在那里。

write_files:
-   content: '| blabla-1'
    path: /tmp/f1.txt
-   content: '| blabla-2'
    path: /tmp/f2.txt

我应该在我的 Python 代码中进行哪些更改以获得想要的结果?

这是我的 Python 3 代码:

import os
from ruamel.yaml import YAML

data1 = "blabla-1"
data2 = "blabla-2"

theDict = {"write_files": [{'content': '| ' + data1,
                            'path': '/tmp/f1.txt'},
                           {'content': '| ' + data2,
                            'path': '/tmp/f2.txt'}
                           ]
                           }

outputFile = "/tmp/test/yaml_test_out.yaml"

if os.path.isfile(outputFile):
    os.remove(outputFile)

outF = open(outputFile, 'w')

yaml = YAML()
yaml.preserve_quotes = True
yaml.indent = 4
yaml.dump(theDict, outF)

标签: pythondictionaryyamlruamel.yaml

解决方案


推荐阅读