使用How can I read a file with Ruby?,读取文件然后逐行打印。
但我的要求不同。
我有一个类似内容为千行的txt文件。
ABC 123
XYZ 234
因此,使用下面的代码,我可以打印整行。
File.open("input.txt", "r") do |infile|
while (line = infile.gets)
puts "#{counter}: #{line}"
counter = counter + 1
end
end
但我需要一些东西将column1分配给A,将column2分配给B:
File.open("input.txt", "r").each_line do |A B|
puts "#{A} has the value of #{B}"
end
我该怎么做。
通常,我需要像bash脚本中的ruby函数:
#!/usr/bin/env bash
while read A B
do
echo "$A has the value of $B"
done < input.txt
答案 0 :(得分:2)
你想要这样的东西吗?
File.open("my/file/path", "r").each_line do |line|
var1, var2 =line.split(" ")
end
如果没有,请查看使用CSV lib: http://www.sitepoint.com/guide-ruby-csv-library-part/
答案 1 :(得分:1)
你可以这样做:
fname = 'tmp'
str =<<_
cat 1
dog 2
pig 3
_
File.write(fname, str)
IO.foreach(fname) {|l| puts "%s has the value of %s" % l.split }
cat has the value of 1
dog has the value of 2
pig has the value of 3
答案 2 :(得分:0)
只要您不需要存储值以供将来参考,您就可以非常轻松地在空间中分割线条,并将其用作数组来拉取两个变量。此外,如果您使用每一行进行迭代,它将为您节省循环中出现轻微错误的可能性,但您始终可以用循环替换它。
File.open("my/file/path", "r").each_line do |line|
vars=line.split(" ")
puts "#{vars[0]} has the value of #{vars[1]}"
end