如何在 ruby​​ 中读取 INI 文件

2024-04-09

如何在 ruby​​ 中读取/写入 ini 文件。我有一个需要的 ini 文件

  1. read
  2. 更改条目
  3. 写出到不同的位置

我该如何在红宝石中做到这一点?关于这一点的文档是黯淡的。


使用 InIFile Gem

正如@method所说,使用inifile http://rubygems.org/gems/inifile宝石。还有一个ini http://rubygems.org/gems/ini宝石,但我没用过。

我找到了文档在这里 http://www.ruby-doc.org/gems/docs/i/inifile-2.0.1/IniFile.html文档在这里 http://rubydoc.info/gems/ini/0.1.1/frames这是宝石页面链接到的地方。

示例不多,因此这里有一些代码可以帮助您入门:

设置示例

首先,创建一个文件/tmp/desktop.ini包含这些内容:

[Desktop Entry]
Version=1.0
Type=Application
Name=Foo Viewer
Comment=The best viewer for Foo objects available!
TryExec=fooview
Exec=fooview %F
Icon=fooview

确保你已经跑了gem install inifile从命令行。

示例代码

创建一个文件,例如/tmp/ini-test.rb包含这些内容:

require 'inifile'
require 'pp'

# read an existing file
file = IniFile.load('/tmp/desktop.ini')
data = file["Desktop Entry"]

#output one property
puts "here is one property:"
puts data["Name"]

# pretty print object
puts "here is the loaded file:"
pp file

# create a new ini file object
new_file = IniFile.new

# set properties
new_file["Desktop Entry"] = {
    "Type" => "Application",
    "Name" => 'test',
    "Exec" => 'command',
}

# pretty print object
puts "here is a object created with new:"
pp new_file

# set file path
new_file.filename = "/tmp/new_ini_file.ini"

# save file
new_file.write()
puts "the new object has been saved as a file to /tmp/new_ini_file.ini"

结果示例

运行该文件ruby /tmp/ini-test.rb应该产生类似的结果:

here is one property:
Foo Viewer

here is the loaded file:
{ this output hidden for brevity }

here is a object created with new:
#<IniFile:0x007feeec000770
 @comment=";#",
 @content=nil,
 @default="global",
 @encoding=nil,
 @escape=true,
 @filename=nil,
 @ini=
  {"Desktop Entry"=>
    {"Type"=>"Application",
     "Name"=>"test",
     "Exec"=>"command",
     "Icon"=>"icon_filename",
     "Comment"=>"comment"}},
 @param="=">

the new object has been saved as a file to /tmp/new_ini_file.ini

根据需要进行修改以满足您的需求。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 ruby​​ 中读取 INI 文件 的相关文章

随机推荐

  • 在 Java 中使用 lambda 表达式有运行时优势吗? [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我正在阅读一些关于 Java 8 中提供的 lambda 表达式的博客和答案 我无法弄清楚单位 lambda 表达式是否有任何运行时优势 我
  • Jupyter笔记本,如何同时运行多个单元?

    我定义了一个运行 bash 脚本的 python 函数 假设该函数是 calc x y z 如果我在 python 中使用一些变量运行这个函数 gt gt gt calc 1 2 3 它生成一个 C 代码 使用变量来模拟某些东西 x 1 y
  • 使用 awk 读取串行输入,插入日期

    我正在尝试重新格式化串行输入 该输入由两个用逗号分隔的整数组成 从 Arduino 发送 1 2 3 4 0 0 0 1 我想在每行后面附加日期 用制表符分隔所有内容 到目前为止 这是我的代码 cat dev cu usbmodem3d11
  • 3d 表面的凸包算法 z = f(x, y)

    我有一个以一组三元组 x i y i z i 形式给出的 3D 表面 其中 x i 和 y i 大致位于网格上 并且每个 x i y i 都有一个关联的 z i 值 典型的网格是20x20 我需要在给定的公差范围内找到哪些点属于曲面的凸包
  • 如何通过流java8中的键获取所有不同的值

    我目前正在学习一些关于流的知识 我有以下 JSONArray 并且我希望能够检索所有不同的 xvalue datasets ds1 xvalues empty x1 x2 ds2 xvalues empty x1 x2 x3 我正在尝试以下
  • 如何正确构建我的 HTML 文件?

    对于一个基本的静态网站 有几个页面和子页面 我对 HTML 页面目录结构的最佳实践有点困惑 假设我有一个像这样的简单网站 索引 主页 页面 关于页面 联系页面和新闻页面 在新闻页面上 有两个链接指向新闻页面的两个子页面fizz html和b
  • 为什么Python函数有一个__dict__?

    在Python中 使用创建的函数def and lambda have a dict 属性 以便您可以动态地向它们添加属性 有一个 dict 每个函数都有内存成本 一个空的dictPython 2 6 中使用 140 个字节 向函数添加属性
  • 在 vb.net 中纠正图像方向服务器端

    在我正在开发的移动网络应用程序中 用户可以使用相机拍照 并将相机图像上传到服务器 我遇到的问题是 在 iOS 设备上 图像会获得与其关联的 EXIF 方向标签 例如 ROTATE 90 CW 该方向标签会导致图像在显示时以不正确的方向显示
  • Django与领域和自身的多对多关系独特

    我尝试使用语言和内容创建帖子 并将其与同一页面的其他版本相关联 但我陷入困境 class Page models Model content models TextField language models CharField max le
  • 如何在android中使用用户当前位置获取邮政编码

    我正在尝试获取邮政编码 但无法获取邮政编码 邮政编码 我可以获取当前城市 但是当我尝试获取邮政编码时 它给了我一个空指针异常 谁能帮我 final Geocoder gcd new Geocoder getApplicationContex
  • 字符的序数/int/ascii 值

    在 clojure repl 中我可以这样做 gt int a 97 在闭包脚本中 我不断得到 gt int a 0 在我当前的 clojurescript 项目中 我定义了一个 var def ord a int a 当我检查发出的 ja
  • C:将值扫描到数组中与常量的相等性进行比较的问题[关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我对 C 完全陌生 现在我正在尝试掌握基础知识 但在从 scanf 读取数据和填充数组时遇到问题 根据我的观察 我认为问题出在 s
  • 有没有办法在android 2.1中不使用动画来旋转按钮

    我正在寻找旋转按钮的方法 不使用动画 我不想使用动画 因为this https stackoverflow com questions 8037185 onlclick listener is not working properly 如果
  • 如何向这个 elm 效果示例添加第二个骰子?

    我是 Elm 新手 一直在查看以下示例 请注意 这是在较新的 0 17 架构下 其中 Action 现在是 Command http elm lang org examples random http elm lang org exampl
  • mysql查询失败时是否有错误日志记录?

    我很好奇当我执行查询时 MySQL 数据库是否记录任何错误 我知道我打电话mysql 错误 http php net manual en function mysql error php检索错误 但数据库端是否还有其他日志记录 默认情况下
  • 用于数据库备份的Linux shell脚本

    我尝试了很多数据库备份脚本 但我无法成功 我想每小时备份一次数据库 我将文件添加到 etc cron hourly 文件夹 将其 chmod 更改为 755 但它没有运行 至少我写了我的伪代码 如果您能为该操作编写一个脚本并告诉我我还应该做
  • 为jade文件中的变量赋值

    是否可以在jade文件中分配变量 以使代码更具可读性 具体来说 我创建了这个jade文件 extends layout var format 1 0f block title title Your score table block bod
  • 如何声明依赖关系

    我正在研究 Dagger 2 所以我想了解一些基本的东西 我有以下代码 Module public class MainModule Provides public Presenter provideMainActivityPresente
  • 在头文件中声明 extern 结构模板以在 c 文件中全局使用

    我的目标是声明和定义一个结构template在我的头文件中 然后我希望使用这个模板来声明和定义个人我的 c 文件中的结构 这是我的目标的一个粗略示例 头文件 include
  • 如何在 ruby​​ 中读取 INI 文件

    如何在 ruby 中读取 写入 ini 文件 我有一个需要的 ini 文件 read 更改条目 写出到不同的位置 我该如何在红宝石中做到这一点 关于这一点的文档是黯淡的 使用 InIFile Gem 正如 method所说 使用inifil