[英]How can I create a yaml file from pure python?
原始YAML文件包含此內容
# tree format
treeroot:
branch1:
name: Node 1
branch1-1:
name: Node 1-1
branch2:
name: Node 2
branch2-1:
name: Node 2-1
在使用yaml.load()
從文件加載內容並將其轉儲到新的YAML文件后,我得到了這個:
# tree format
treeroot:
branch1:
branch1-1: {name:Node 1-1}
name: Node 1
branch2:
branch2-1: {name: Node 2-1}
name: Node 2
直接從純python構建YAML文件的正確方法是什么? 我不想自己寫字符串。 我想建立字典和列表。
部分...
dataMap = {'treeroot':
{'branch2':
{'branch1-1':
{'name': 'Node 1-1'}, # should be its own level
'name': 'Node 1'
}
}
}
好的。 我只是仔細檢查了文檔。 我們在yaml.dump(data, optional_args)
的末尾需要這個
修復就是這個
yaml.dump(dataMap, f, default_flow_style=False)
其中dataMap是源yaml.load()
,f是要寫入的文件。
假設您正在使用PyYAML,您顯示的輸出不是 yaml.dump()
生成的內容的復制粘貼,因為它包含注釋,而PyYAML不會寫這些。
如果要保留該注釋,以及例如文件中的鍵排序(在將文件存儲在修訂控制系統中時很好),請使用¹:
import ruamel.yaml as yaml
yaml_str = """\
# tree format
treeroot:
branch1:
name: Node 1
branch1-1:
name: Node 1-1 # should be its own level
branch2:
name: Node 2
branch2-1:
name: Node 2-1
"""
data = yaml.load(yaml_str, Loader=yaml.RoundTripLoader)
print yaml.dump(data, Dumper=yaml.RoundTripDumper, indent=4)
它可以讓你完全輸入:
# tree format
treeroot:
branch1:
name: Node 1
branch1-1:
name: Node 1-1 # should be its own level
branch2:
name: Node 2
branch2-1:
name: Node 2-1
¹ 這是使用ruamel.yaml完成的PyYAML的增強版本,我是作者。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.