在python中将字典写入YAML文件的问题

安库苏曼

我想将字典写入YAML文件,这是到目前为止我正在做的事情

from ruamel.yaml import YAML

Flavor_Details = {'Flavor_Details':{
                  'type': 'OS::Nova::Flavor', 
                  'properties': {
                                 'name': 'test-flavor', 
                                 'extra_specs': {"hw:cpu_policy": 'shared'}, 
                                 'ram': 4096, 
                                 'vcpus': 4, 
                                 'disk': 8
                                }
                 }}

output_section = {
                    'server_public_ip':{
                        'description': 'Floating IP address of server',
                        'value': { 'get_attr': [ 'server_floating_ip', 'ip' ] }
                    }
                }

resources_dict = {}
resources_dict.update(Flavor_Details)
resources_dict.update(output_section)

yaml = YAML(typ= 'safe')

with open('test.yaml', 'w') as outfile:
     yaml.dump(resources_dict,outfile)

这是YAML文件中的结果

Flavor_Details:
    properties:
      disk: 8
      extra_specs: {hw:cpu_policy: shared}
      name: test-flavor
      ram: 4096
      vcpus: 4
    type: OS::Nova::Flavor
server_public_ip:
    description: Floating IP address of server
    value:
      get_attr: [server__floating_ip, ip]

但是我想要这样的结果:

Flavor_Details:
    properties:
      disk: 8
      extra_specs: {"hw:cpu_policy": shared}
      name: test-flavor
      ram: 4096
      vcpus: 4
    type: OS::Nova::Flavor
server_public_ip:
    description: Floating IP address of server
    value: {get_attr: [server__floating_ip, ip]}

我想要将其"hw:cpu_policy"作为字符串,因为在和:之间,hw并且在cpu_policy中,value我想要{get_attr: [server__floating_ip, ip]}这样。

有什么办法可以得到这样的东西吗?

安通

您可以得到想要的东西,但是不能使用安全的倾卸器。基于C的基础代码不允许您想要细粒度的控件。

您将需要使用默认的(往返)转储程序,它可以进行这种详细的控制,因为它需要它来尝试并保留往返的布局。

我希望您认识到,hw:cpu_policy根据YAML规范,YAML文件中的引号不是必需的,但是YAML解析器的某些错误实现对此存在问题。

import sys
import ruamel.yaml

def Q(s):
    return ruamel.yaml.scalarstring.DoubleQuotedScalarString(s)

def F(*args, **kw):
    x = ruamel.yaml.comments.CommentedMap()
    x.fa.set_flow_style()
    for a in args:
        x.update(a)
    x.update(kw)
    return x


Flavor_Details = {'Flavor_Details':{
                  'type': 'OS::Nova::Flavor', 
                  'properties': {
                                 'name': 'test-flavor', 
                                 'extra_specs': F({Q("hw:cpu_policy"): 'shared'}), 
                                 'ram': 4096, 
                                 'vcpus': 4, 
                                 'disk': 8
                                }
                 }}

output_section = {
                    'server_public_ip':{
                        'description': 'Floating IP address of server',
                        'value': F(get_attr=['server_floating_ip', 'ip'])
                    }
                }

resources_dict = {}
resources_dict.update(Flavor_Details)
resources_dict.update(output_section)

yaml = ruamel.yaml.YAML()
# yaml.indent(mapping=4, sequence=4, offset=2)
yaml.dump(resources_dict, sys.stdout)

这使:

Flavor_Details:
  type: OS::Nova::Flavor
  properties:
    name: test-flavor
    extra_specs: {"hw:cpu_policy": shared}
    ram: 4096
    vcpus: 4
    disk: 8
server_public_ip:
  description: Floating IP address of server
  value: {get_attr: [server_floating_ip, ip]}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在Python中将文件写入Zip文件的根目录

来自分类Dev

在python中将列表写入txt文件

来自分类Dev

树枝从Yaml文件写入

来自分类Dev

在Python中将多个JSON写入CSV-字典到CSV

来自分类Dev

如何在python中从字典中写入多个文件

来自分类Dev

Python覆盖字典写入文本文件问题

来自分类Dev

写入文件python-换行问题(\ n)

来自分类Dev

在python中将字节写入文件

来自分类Dev

在python中将线程安全写入文件

来自分类Dev

在python中将数据从文件导入字典

来自分类Dev

如何将python字典写入Excel文件?

来自分类Dev

将Python字典写入文件

来自分类Dev

在Powershell中将输出写入文件时出现问题

来自分类Dev

用python将字典写入文件

来自分类Dev

如何在Python中将文件路径写入txt文件

来自分类Dev

python文件在csv中写入,行写入问题

来自分类Dev

在Python中将unicode类型的对象写入文件

来自分类Dev

在python中将循环变量写入文件的单行

来自分类Dev

在Python中将清单字典(长度可变)写入csv

来自分类Dev

Python文件写入格式问题

来自分类Dev

python解码和文件写入问题

来自分类Dev

写入文件python-换行问题(\ n)

来自分类Dev

Python 2.7:整个代码写入文件问题

来自分类Dev

创建字典以写入文件

来自分类Dev

在python中将文件得分到字典?

来自分类Dev

在 python 3.6 中将多行写入 csv 文件时遇到问题

来自分类Dev

在python中将日期时间写入CSV文件?

来自分类Dev

Pandas 的 Python 文件写入问题

来自分类Dev

Python-问题写入txt文件