[英]Keep anchors & aliases on load/dump YAML using ruamel.yaml
使用yaml.load時,如何避免ruamel.yaml
合並錨點? 我想按原樣保留文件,只需修改一些鍵,例如production -> host
和production -> port
並轉儲到文件
defaults: &defaults
host: <%= ENV.fetch("VBOX_IP", "127.0.0.1") %>
adapter: mysql2
reconnect: true
encoding: utf8
username: root
production:
default:
<<: *defaults
host: dbname.domain.com
port: 3306
如果文件config.yaml
有該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
密鑰添加到以合並密鑰開頭的映射中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.