我可以操作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文件? ”可能是有用的,以及本页右侧的其他“相关”链接。