标题真的不能解释事情.我的情况是我想读取一个文件并将内容放入哈希.现在,我想让它变得聪明,我想创建一个循环,打开目录中的每个文件并将其放入哈希.问题是我不知道如何分配相对于文件名的名称.例如:
hash={}
Dir.glob(path + "*") do |datafile|
file = File.open(datafile)
file.each do |line|
key, value = line.chomp("\t")
# Problem here is that I wish to have a different
# hash name for every file I loop through
hash[key]=value
end
file.close
end
Run Code Online (Sandbox Code Playgroud)
这可能吗?
为什么不使用其键是文件名(在您的情况下为"datafile")并且其值是您插入数据的哈希值的哈希?
hash = Hash.new { |h, key| h[key] = Hash.new }
Dir.glob(path + '*') do |datafile|
next unless File.stat(datafile).file?
File.open(datafile) do |file|
file.each do |line|
key, value = line.split("\t")
puts key, value
# Different hash name for every file is now hash[datafile]
hash[datafile][key]=value
end
end
end
Run Code Online (Sandbox Code Playgroud)