Ruby read file_name with gets



我有一个初学者编码任务,第一步是我的程序"应该提示用户输入一个包含以下信息的文件的文件名:"已经有预先制作的代码可以运行了,一个"music_player。rb"(我必须在这里写代码)和"albums.text"(这是我要读取的文件)

我知道a_file = File.new("mydata.txt", "r")是从文件中读取。我想做:

file_name = gets()
a_file = File.new("#{file_name}" , "r") # (line 13)

总是出错

music_player_with_menu.rb:13:in `initialize': No such file or directory @ rb_sysopen - albums.txt (Errno::ENOENT) 

,当我输入albums.txt。如果我只是去除getsFile.new("albums.txt" , "r")它工作。我不知道我做错了什么。

尝试从mydata.txtn读取将引发异常,除非文件名实际上以n结束,这是很少发生的情况。这是因为您使用了#gets,它包含了用户按RETURNENTER时的换行符。

当你从STDIN读取时,你会得到一个行结束符(例如,在*nix上n,在Windows上rn)。因此,当调用#gets时,几乎总是需要对结果调用String#chomp。

file_name = gets
#=> "foon"
file_name = gets.chomp
#=> "foo"

相关内容

  • 没有找到相关文章

最新更新