当我开始从文件中打印行时,我收到此错误
#<File:0x007ff65ee297b0>
这是代码
require 'rubygems'
File.open("sample.txt", 'r') do |f|
puts f
end
答案 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 }