如何访问和操作平面文件?

时间:2014-06-18 15:11:05

标签: ruby file nomethoderror nameerror flat

在这个Ruby练习中,我必须访问一个包含三首歌曲的平面文件,其中包含歌曲的标题,艺术家,以分钟和秒为单位的长度以及文件名。该练习要求执行以下操作:

  • 将行划分为字段,
  • 将运行时间从mm:ss转换为秒,
  • 从艺术家的名字中删除这些额外的空格。

我继续将以下内容复制并粘贴到纯文本文件中并保存为" songFile":

/jazz/j00132.mp3  | 3:45 | Fats     Waller     | Ain't Misbehavin'
/jazz/j00319.mp3  | 2:58 | Louis    Armstrong  | Wonderful World
/bgrass/bg0732.mp3| 4:09 | Strength in Numbers | Texas Red
         :                  :           :                   :

要将歌曲线分成字段,我将其放入终端:

songs = SongList.new

songFile.each do |line|
  file, length, name, title = line.chomp.split(/\s*\|\s*/)
  songs.append Song.new(title, name, length)
end
puts songs[1]

然后收到这两条错误消息:

NameError: undefined local variable or method `songFile' for main:Object
NoMethodError: undefined method `[]' for nil:NilClass

2 个答案:

答案 0 :(得分:0)

打开文件并执行操作。像这样的东西

...
File.open("songFile") do |sf|
  sf.each do |line|
  ...
  end
end
...

答案 1 :(得分:0)

假设您在文本文件与脚本相同的目录中

songs = SongList.new

File.readlines('./songFile').each do |song|
  file, length, name, title = line.chomp.split(/\s*\|\s*/)
  songs.append Song.new(title, name, length)
end

puts songs[1]