ruamel.yaml 转储不保留布尔值大小写
ruamel.yaml dump doesn't preserve boolean value case
我在 linux 和 osx 上都有一个简单的 python 2.7.12 脚本 运行,提供相同的输出。在转储期间使用 ruamel 时,布尔值似乎全部转换为小写。作为测试,当字段转换为不带引号的字符串时,没有大小写转换。
文件:test.yml
namespace: default
testapp_appname: testapp
images:
testapp:
path: "foo/testapp"
tag: "202120810083053-1.2.3"
testapp_replicas: 1
testapp_monitoring_enabled: False
testapp_node_selector: ""
我的简单测试脚本:
import ruamel
import sys
from ruamel.yaml import YAML
yaml = YAML()
def main():
config_path = "test.yml"
image = "testapp"
timestamp = "202120810083053-"
version = "1.2.3"
config = ruamel.yaml.round_trip_load(open(config_path), preserve_quotes=True)
config['images'][image]['tag'] = "{}{}".format(timestamp, version)
ruamel.yaml.round_trip_dump(config, sys.stdout)
if __name__ == "__main__":
main()
输入:
testapp_monitoring_enabled: False
输出:
testapp_monitoring_enabled: false
您将新的 API ( yaml = YAML()
) 与旧的 API (ruamel.yaml.round_trip_dump()
) 混合使用,这是可能的,但不是必需的(也不推荐)。
ruamel.yaml
不会保留布尔值的大小写(False
、FALSE
),但可以使用 [=23 设置转储中使用的值=] 属性(这当然会影响所有布尔值):
import sys
from ruamel.yaml import YAML
yaml = YAML()
yaml.preserve_quotes = True
yaml.boolean_representation = ['False', 'True']
def main():
config_path = "test.yml"
image = "testapp"
timestamp = "202120810083053-"
version = "1.2.3"
config = yaml.load(open(config_path))
config['images'][image]['tag'] = "{}{}".format(timestamp, version)
yaml.dump(config, sys.stdout)
if __name__ == "__main__":
main()
会给你:
namespace: default
testapp_appname: testapp
images:
testapp:
path: "foo/testapp"
tag: "202120810083053-1.2.3"
testapp_replicas: 1
testapp_monitoring_enabled: False
testapp_node_selector: ""
我在 linux 和 osx 上都有一个简单的 python 2.7.12 脚本 运行,提供相同的输出。在转储期间使用 ruamel 时,布尔值似乎全部转换为小写。作为测试,当字段转换为不带引号的字符串时,没有大小写转换。
文件:test.yml
namespace: default
testapp_appname: testapp
images:
testapp:
path: "foo/testapp"
tag: "202120810083053-1.2.3"
testapp_replicas: 1
testapp_monitoring_enabled: False
testapp_node_selector: ""
我的简单测试脚本:
import ruamel
import sys
from ruamel.yaml import YAML
yaml = YAML()
def main():
config_path = "test.yml"
image = "testapp"
timestamp = "202120810083053-"
version = "1.2.3"
config = ruamel.yaml.round_trip_load(open(config_path), preserve_quotes=True)
config['images'][image]['tag'] = "{}{}".format(timestamp, version)
ruamel.yaml.round_trip_dump(config, sys.stdout)
if __name__ == "__main__":
main()
输入:
testapp_monitoring_enabled: False
输出:
testapp_monitoring_enabled: false
您将新的 API ( yaml = YAML()
) 与旧的 API (ruamel.yaml.round_trip_dump()
) 混合使用,这是可能的,但不是必需的(也不推荐)。
ruamel.yaml
不会保留布尔值的大小写(False
、FALSE
),但可以使用 [=23 设置转储中使用的值=] 属性(这当然会影响所有布尔值):
import sys
from ruamel.yaml import YAML
yaml = YAML()
yaml.preserve_quotes = True
yaml.boolean_representation = ['False', 'True']
def main():
config_path = "test.yml"
image = "testapp"
timestamp = "202120810083053-"
version = "1.2.3"
config = yaml.load(open(config_path))
config['images'][image]['tag'] = "{}{}".format(timestamp, version)
yaml.dump(config, sys.stdout)
if __name__ == "__main__":
main()
会给你:
namespace: default
testapp_appname: testapp
images:
testapp:
path: "foo/testapp"
tag: "202120810083053-1.2.3"
testapp_replicas: 1
testapp_monitoring_enabled: False
testapp_node_selector: ""