Ruby:NoMethodError:文本文件中未定义的方法`split'

时间:2014-05-08 01:52:11

标签: ruby

我试图将一个txt文件(逐行)加载到一个数组中,但是我遇到了NoMethodError错误。

input_log = File.open("C:/text_file.txt", "r")
array1 = input_log.split("\n")
array1.each do |element|
  puts element
end

当你运行它时,我得到了

**:in `<top (required)>': undefined method `split' for #<File:C:/text_file.txt> (NoMethodError)
    from -e:1:in `load'
    from -e:1:in `<main>'**

PS:Ruby Beginner - 请帮忙

3 个答案:

答案 0 :(得分:3)

File.open为您提供了一个IO对象,您可以从中读取内容。您应该阅读文件数据,然后阅读split这些内容:

input_log = File.open("C:/text_file.txt", "r").read
array1 = input_log.split("\n")
array1.each do |element|
  puts element
end

对于您的任务,最好使用IO.foreach

File.foreach("C:/text_file.txt") do |line|
  puts line
end

答案 1 :(得分:1)

另一种专门用于读取多行文件的方法:

puts IO.readlines("C:/text_file.txt")

函数readlines用于将多行文件读入数组,每个条目对应于文件中的一行,可以使用puts打印。 您可以按如下方式读取并放入数组中的每一行:

array = IO.readlines("C:/text_file.txt").map{&:chomp)

答案 2 :(得分:0)

您无法直接在文件对象上使用拆分方法

所以你可以试试这个

array1 = []
File.open("C:/text_file.txt", "r").each do |test|
array1 << test.split("\n")
end
array1.each do |element|
  puts element
end