从python生成带有某些键和值并带有双引号的YAML文件

您所在的位置:网站首页 python修改yaml文件的值 从python生成带有某些键和值并带有双引号的YAML文件

从python生成带有某些键和值并带有双引号的YAML文件

2024-05-20 22:06| 来源: 网络整理| 查看: 265

最近,Ubuntu开始与netplan一起发布。它需要yaml配置来设置网络接口。因此,例如,它需要以下yaml来设置WiFi:

代码语言:javascript复制network: version: 2 renderer: NetworkManager wifis: interface_name: access-points: "apn": password: "pwd" nameservers: addresses: [8.8.4.4, 8.8.8.8] dhcp4: true

请注意,在access-points下,network_ssid_name (apn)和password字段(pwd)的值用双引号引起来。

我查看了堆栈溢出,发现了this

然而,这个解决方案需要从pip call ruamel.yaml安装一个模块。我希望使用我的python发行版中已有的PyYAML模块来实现这一点。

以下是我到目前为止尝试过的一些方法:

代码语言:javascript复制import yaml d = {'network': {'version': 2, 'renderer': 'NetworkManager', 'wifis':{'wlp58s0': {'access-points': {b'apn': {'password': b'pwd'}}}}}} with open('/home/edyza/result.yml', 'w') as yaml_file: yaml.dump(d, yaml_file, default_flow_style=False, default_style=None)

此命令的输出为

代码语言:javascript复制network: renderer: NetworkManager version: 2 wifis: wlp58s0: access-points: apn: password: pwd

现在,我尝试使用转义字符和其他一些东西,比如

代码语言:javascript复制import yaml d = {'network': {'version': 2, 'renderer': 'NetworkManager', 'wifis':{'wlp58s0': {'"access-points"': {'apn': {'password': "\"pwd\""}}}}}} with open('/home/edyza/result.yml', 'w') as yaml_file: yaml.dump(d, yaml_file, default_flow_style=False, default_style=None)

然后输出更改为

代码语言:javascript复制network: renderer: NetworkManager version: 2 wifis: wlp58s0: '"access-points"': apn: password: '"pwd"'

在不使用第三方模块的情况下,如何进行更改才能在适当的键和值处使用双引号获得所需的输出?

或者有没有其他我应该考虑的方法来生成yaml文件。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3