我试图将一个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 - 请帮忙
答案 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