从ruby中的文件打印行

时间:2014-11-04 07:33:16

标签: ruby file readfile

当我开始从文件中打印行时,我收到此错误

#<File:0x007ff65ee297b0>

这是代码

require 'rubygems'
File.open("sample.txt", 'r') do |f|
puts f
end

4 个答案:

答案 0 :(得分:4)

您正在打印文件对象。要逐行获取内容,您可以使用File.foreach

File.foreach('sample.txt', 'r') do |line|
  puts line # called for every line
end

要一次处理整个文件,可以在文件对象上使用read方法:

File.open('sample.txt', 'r') do |file|
  puts file.read # called only once
end

答案 1 :(得分:2)

这不是错误。它正确打印一行是您的File对象。 在这里,您创建一个文件对象,并且没有要求它获取行或其他任何内容。

已有几个好的答案。但是,这是另一种方法,只需对代码进行最小的更改即可实现:

File.open("sample.txt", 'r').each_line do |f|
  puts f
end

答案 2 :(得分:1)

File::open返回文件句柄(显然正在打印为#<File:0x007ff65ee297b0>。)如果您需要逐行显示文件内容,则可能需要使用IO::readlines

IO.readlines("sample.txt").each do |line|
  puts line
end

答案 3 :(得分:1)

另一种方式:

IO.foreach("sample.txt") {|line|  line }

或者

File.foreach('sample.txt') {|line| line }