Ruby 我可以操作yaml文件并再次写出它们吗
我有一个值映射,键是一个文件名,值是一个数组字符串。 我有相应的文件 如何加载文件并创建包含数组值的固定yaml值,而不管该值是否已经存在 e、 g YAML(file.YAML) 或 从 红宝石 报告没有很好地介绍它的方法,但确实说 底层实现是libyaml包装器Psych 作为YAML的基础,包含读取、解析和发出YAML 以下是基本流程:Ruby 我可以操作yaml文件并再次写出它们吗,ruby,yaml,Ruby,Yaml,我有一个值映射,键是一个文件名,值是一个数组字符串。 我有相应的文件 如何加载文件并创建包含数组值的固定yaml值,而不管该值是否已经存在 e、 g YAML(file.YAML) 或 从 红宝石 报告没有很好地介绍它的方法,但确实说 底层实现是libyaml包装器Psych 作为YAML的基础,包含读取、解析和发出YAML 以下是基本流程: require 'yaml' foo = {"file.yaml" => ["extra","intra","lateral"]} bar = f
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的文件将YAML写入文件很容易。write
方法:
File.write(foo.keys.first, foo.values.first.to_yaml)
或
这将生成一个名为“file.yaml”的文件,其中包含:
---
- extra
- intra
- lateral
要读取和解析文件,请使用YAML的方法
“”以及本页右侧的其他“相关”链接可能有用。不太清楚您想做什么。
trg::方位:
来自哪里?它不在您的示例散列中,也没有在任何地方解释。trg::aziration:是我希望在yaml中看到的不会更改的静态值
baz = YAML.load(bar)
baz
# => {"file.yaml"=>["extra", "intra", "lateral"]}
File.write(foo.keys.first, foo.values.first.to_yaml)
foo.each do |k, v|
File.write(k, v.to_yaml)
end
---
- extra
- intra
- lateral
foo = YAML.load_file('file.yaml')
# => ["extra", "intra", "lateral"]