Ruby读取文件行问题

时间:2015-12-08 04:24:47

标签: ruby

我正在尝试将文件读入字符串。例如,我尝试阅读此文件:

123456  
23456  
3456  
456  
56  
6

我试过了:

contents = File.open("test.txt", "rb").read  
print contents
IO.foreach('test.txt') do |line|  
  print line  
end
File.open('test.txt', 'r').each_line do |line|
  print line
end     

但我似乎得到了一行将用每个新行覆盖它的内容。我得到666666

2 个答案:

答案 0 :(得分:1)

问题必须是文件正在使用CR线路终结器(或者您的终端搞砸了并且没有响应LF)。默认情况下,print不会进入新行(如果这是你想要的话,你应该使用puts),each_line不会删除行终止符。所以会发生什么,print "123456\r“打印出123456,然后将光标返回到行的开头,而不移动到下一行(因此光标在1上。然后当你print "23456\r",它将覆盖前五个字符并再次回到开头,当前状态为234566 ...最后,566666将被{{1}覆盖最终的"6\r"

答案 1 :(得分:1)

为什么不尝试简单的解决方案

# ruby sample code.
# process every line in a text file with ruby (version 1).
file='test.txt'
File.readlines(file).each do |line|
  puts line
end

第二种方法

# ruby sample code.
# process every line in a text file with ruby (version 2).
file='test.txt'
f = File.open(file, "r")
f.each_line { |line|
  puts line
}
f.close

Answer Source