我可以操作yaml文件并再次写出来
我有一个值映射,键是文件名,值是数组字符串。 我有相应的文件
我将如何加载文件并创建一个固定的yaml值,该值包含数组的值,无论该值是否已存在
例如
YAML(file.yaml)
trg::azimuth: -extra -intra -lateral
要么
trg::azimuth: [extra,intra,lateral]
从
ruby
{"file.yaml" => ["extra","intra","lateral"]}
YAML文档没有很好地介绍它的方法,但确实如此
底层实现是libyaml包装器Psych。
作为YAML基础的Psych文档涵盖了阅读,解析和发布YAML。
这是基本过程:
require 'yaml' foo = {"file.yaml" => ["extra","intra","lateral"]} bar = foo.to_yaml # => "---\nfile.yaml:\n- extra\n- intra\n- lateral\n"
以下是生成的序列化bar
变量在编写时的样子:
puts bar # >> --- # >> file.yaml: # >> - extra # >> - intra # >> - lateral
这是YAML解析器所需的格式:
baz = YAML.load(bar) baz # => {"file.yaml"=>["extra", "intra", "lateral"]}
此时,哈希已经从Ruby散列到YAML序列化字符串,再回到Ruby散列。
使用Ruby的File.write
方法可以轻松地将YAML写入文件:
File.write(foo.keys.first, foo.values.first.to_yaml)
要么
foo.each do |k, v| File.write(k, v.to_yaml) end
这导致名为“file.yaml”的文件,其中包含:
--- - extra - intra - lateral
要读取和解析文件,请使用YAML的load_file
方法。
foo = YAML.load_file('file.yaml') # => ["extra", "intra", "lateral"]
“ 我如何解析YAML文件? ”可能是有用的,以及本页右侧的其他“相关”链接。