我们可以在文件中存储多个对象吗?

湿婆

我已经熟悉如何将对象保存到文件中?

但是,如果我们必须将多个对象(例如哈希)存储到一个文件中,该怎么办?

我尝试YAML.dump(hash)从代码中的各个位置附加到文件。但是困难的部分是读回它。由于yaml dump可以扩展到多行,因此我必须解析该文件吗?同样,这只会使代码复杂化。有没有更好的方法来实现这一目标?

PS:相同的问题将持续存在Marshal.dump因此,我更喜欢YAML它更易读的内容。

马特

YAML.dump创建一个Yaml文档如果文件中同时包含多个Yaml文档,则您将具有Yaml因此,当您将多个调用的结果附加YAML.dump在一起时,您将拥有一个流。

如果您尝试使用来阅读本YAML.load文档,则只会得到第一个文档。要取回所有文档,可以使用YAML.load_stream,它将为您提供一个数组,其中包含每个文档的条目。

一个例子:

f = File.open('data.yml', 'w')

YAML.dump({:foo => 'bar'}, f)

YAML.dump({:baz => 'qux'}, f)

f.close

之后,data.yml将看起来像这样,其中包含两个单独的文档:

---
:foo: bar
---
:baz: qux

您现在可以像这样读回它:

all_docs = YAML.load_stream(File.open('data.yml'))

这会给你一个像这样的数组[{:foo=>"bar"}, {:baz=>"qux"}]

如果您不想一次性将所有文档加载到一个数组中,则可以将一个块传递给load_stream每个文档,并在解析后处理每个文档:

YAML.load_stream(File.open('data.yml')) do |doc|
  # handle the doc here
end

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在Java中,我们可以将一个类分为多个文件吗?

我们可以将多个存储过程连接在一起吗?

我们可以在密钥存储区中加载多个证书和密钥吗?

我们可以查看JVM内存中的对象吗?

我们可以同时打开多个FileWriter流到同一文件吗?

在Jekyll中,我们可以将多个集合分组在同一个文件夹中吗?

在Spark Streaming中,我们可以将数据(哈希图)存储在Executor内存中吗

上传多个文件时,我们可以跟踪单个文件的上传进度吗?

我们可以一次对多个对象设置DT吗?

我们可以用多个边界框预测变量替换对象检测中的锚定框吗?

我们可以在Azure DevOps中锁定文件吗?

我们可以在Azure中为多个资源分配多个角色吗?

我们可以在代码中执行多个程序吗?

我们可以将“ cd ..”路径存储在bash文件中的变量中吗?

我们可以在对象中接收@RequestParam吗

我们可以在Django中创建多个视图吗

我们可以有多个juju配置文件吗?

核心数据迁移-我们可以在xcode中使用多个.xcmappingmodel文件吗?

我们可以从Rails应用程序上传文件到hidrive在线存储吗?

我们可以在pdf文件中搜索包含多个没有特定顺序的单词的页面吗?

我们可以将Azure Premium存储附加到多个VM吗

我们可以在 Chrome Storage 中存储文件而不是字符串吗

我们可以在同一个对象中实现多个 QtRO 接口吗?

我们可以在 gitswarm 的一个项目下有多个存储库吗?

我们可以在常规寄存器中存储浮点数吗?

我们可以运行javascript本地存储对吗?[完毕]

我们可以从javascript中的单个对象键值中获取一个对象吗?

我们可以访问存储在 Razor View .Net core 3.1 会话中的复杂对象吗

我们可以添加两个或多个相同类型的对象吗?