我无法在保留注释的同时从YAML文件加载十六进制值.我需要将其转储为十六进制数字,而不是十六进制字符串.输出文件的 struct 必须与另一个程序读取的输入文件的 struct 相同.
以下是我的YAML文件的一般 struct :
myvalue: 0x12 # This is my value
othervalue: "foo"
bar:
value1: true # This value is true
value2: 4627
在回答similar question's之后,我try 添加一个表示者来处理十六进制数据:
class HexInt(int): pass
def representer(dumper, data):
return ruamel.yaml.ScalarNode('tag:yaml.org,2002:int', hex(data))
ruamel.yaml.add_representer(HexInt, representer)
但要将十六进制数据作为字符串加载,我必须将YAML对象上的type参数设置为"base",从而消除注释.
有没有办法既能加载和转储十六进制值,又能保持注释的完整性?