如果您在文件中有该 YAML 示例,config.yaml
那么您可以执行以下操作:
import sys
import ruamel.yaml
yaml = ruamel.yaml.YAML()
with open('config.yaml') as ifp:
data = yaml.load(ifp)
data['defaults']['reconnect'] = False
data['production']['default']['port'] += 1
with open('config.yaml', 'w') as ofp:
yaml.dump(data, ofp)
获取更新的文件:
defaults: &defaults
host: <%= ENV.fetch("VBOX_IP", "127.0.0.1") %>
adapter: mysql2
reconnect: false
encoding: utf8
username: root
production:
default:
<<: *defaults
host: dbname.domain.com
port: 3307
默认值YAML()
(相当于YAML(typ='rt')
)将为您提供双向加载器/转储器,它保留了锚名称和合并键(<<
)。
请注意,如果您愿意:
data['production']['default']['reconnect'] = 'False'
然后该reconnect
键将被添加到以合并键开头的映射中。