如何插入';第'节;通过Ruby在文件的顶部
我有一个Ini文件,我正在使用它来帮助解析它。 我想在ini文件的顶部添加一个新的如何插入';第'节;通过Ruby在文件的顶部,ruby,ini,Ruby,Ini,我有一个Ini文件,我正在使用它来帮助解析它。 我想在ini文件的顶部添加一个新的部分,我该怎么做 sample.ini [Student1] A = 1 [Student2] B = 1 我的预期结果, [Summary] NumOfStudents=2 [Student1] A = 1 [Student2] B = 1 问题:摘要部分始终插入底部 [Student1] A = 1 [Student2] B = 1 [Summary] NumOfStudents=2 我
部分
,我该怎么做
sample.ini
[Student1]
A = 1
[Student2]
B = 1
我的预期结果,
[Summary]
NumOfStudents=2
[Student1]
A = 1
[Student2]
B = 1
问题:
摘要
部分始终插入底部
[Student1]
A = 1
[Student2]
B = 1
[Summary]
NumOfStudents=2
我的Ruby脚本
iniFileHandle = IniFile.load(sample.ini)
numOfStudents = iniFileHandle.sections.size
iniFileHandle['Summary'] = {'NumOfStudents' => numOfStudents}
附加的
从文档中,我找不到任何在顶部插入节的函数。这个gem的代码非常简单,非常简单 现在看来不可能。如果需要,可以实现此功能。在他的代码中,他基本上保留了一个节名和一个包含该节上变量的哈希。
[]=
方法所做的是使用其[]=
方法向散列添加一个新变量。由于Ruby1.9Ruby哈希是有序的,但是这个方法在它的尾部添加了一些内容。在哈希前面添加的方法如下所示:
{front_key: "Front value"}.merge(original_hash)
愉快的黑客行为。1)为什么ini文件中各节的顺序相关
(二)
my_prog.rb:
require 'inifile'
ini_file = IniFile.load("sample.ini")
numOfStudents = ini_file.sections.size
h = {
"Summary" => { "NumOfStudents" => numOfStudents }
}
ini_file.instance_eval do
p @ini #instance_eval() changes self to ini_file, and
h.merge! @ini #all instance variables are looked up in whatever
@ini = h #object is self. If you look at the inifile gem's source
end #code, the sections of the ini file are stored in a
#hash called @ini
ini_file.write
--output:--
$ cat sample.ini
[Student1]
A = 1
[Student2]
B = 1
~/ruby_programs$ ruby my_prog.rb
{"Student1"=>{"A"=>"1"}, "Student2"=>{"B"=>"1"}}
~/ruby_programs$ cat sample.ini
[Summary]
NumOfStudents = 2
[Student1]
A = 1
[Student2]
B = 1
3) 或者你可以这样做:
require 'inifile'
class IniFile
attr_accessor :ini
end
ini_file = IniFile.load("sample.ini")
numOfStudents = ini_file.sections.size
h = {
"Summary" => { "NumOfStudents" => numOfStudents }
}
results = h.merge! ini_file.ini
ini_file.ini = results
ini_file.write
谢谢我明白你的意思了,让我稍后再做,因为我刚学了一天ruby。投票表决你的想法。当然,你也可以只写
类文件;属性存取器:ini;结束
,然后您可以将@ini更改为您的心形内容——我已将其添加到我的答案中。已标记(&up)已投票。对于第一个问题,ini文件可能会手动打开以了解有多少学生。如果摘要
部分始终位于底部,则不方便。而StudentXX
部分已经指出了有多少学生,因此,将其放在底部是没有意义的。我认为ini文件不应该用于随意查看或提供摘要信息。它们应该用于初始化程序运行所需的一些配置。是的,大多数情况下我们不会直接打开它,只是在我遇到的少数情况下。