我正在尝试使用CSV作为SiriProxy项目的插件中的设置文件,以使用wake-on-lan。这个项目基于ruby。
因此csv如下所示:
Name, MACAddress
Desktop, 01-23-45-67-89-ab
Computer, 02-46-81-02-46-cd以此类推。
例如,当变量userAction是“桌面”时,我查询CSV,它将MAC地址返回到另一个变量中。我不知道该怎么做。我看过csv和faster_csv,但不知道如何让它们像这样工作。
提前感谢!
发布于 2011-12-12 03:32:45
如果你尝试在Ruby1.9中使用FasterCSV,你会得到一个警告,说标准的Ruby1.9CSV库实际上更快。所以我使用了标准的Ruby CSV库。这应该可以在Ruby 1.9或1.8.7中工作。
require 'csv'
module MyConfig
@mac_address_hash = {}
CSV.foreach("config.csv") do |row|
name, mac_address = row
next if name == "Name"
@mac_address_hash[name] = mac_address
end
puts "Now we have this hash: " + @mac_address_hash.inspect
def self.mac_address(computer_name)
@mac_address_hash[computer_name]
end
end
puts "MAC address of Desktop: " + MyConfig.mac_address("Desktop")此代码的输出为:
Now we have this hash: {"Computer"=>" 02-46-81-02-46-cd", "Desktop"=>" 01-23-45-67-89-ab"}
MAC address of Desktop: 01-23-45-67-89-ab现在,我想让你做的是仔细阅读这段代码的每一行,并试图理解它的作用以及为什么它是必要的。从长远来看,这会让你成为一名更好的程序员。
您可以改进此代码,以便在第一次需要CSV文件时延迟加载该文件。
发布于 2011-12-12 04:37:38
我将演示极其简单的方法。从长远来看,像David Grayson那样将所有内容都填充到散列中的效率要高得多,但对于运行几次的脚本来说,这可能就足够了。
require 'csv'
config = CSV.read('config.csv')
config.shift # Get rid of the header
# We're done! Start using like so:
p config.assoc("Computer").last #=>" 02-46-81-02-46-cd" 如果前导空格是不需要的:
config = CSV.read('config.csv', {:col_sep => ', '})https://stackoverflow.com/questions/8466667
复制相似问题