Ruby 阅读 file_name with gets
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
时。如果我只是删除 gets
并使用 File.new("albums.txt" , "r")
它就可以了。我不确定我做错了什么。
尝试从 mydata.txt\n
读取将引发异常,除非文件名实际上以 \n
结尾,这种情况很少见。这是因为您使用的是#gets,其中包括来自用户按 RETURN 或 ENTER 的换行符。
当您从 STDIN 读取时,您将得到一个行尾(例如,\n
在 *nix 上,\r\n
在 Windows 上)。因此,当您调用#gets 时,几乎总是需要对结果调用 String#chomp。
file_name = gets
#=> "foo\n"
file_name = gets.chomp
#=> "foo"
我有一个初学者编码任务,第一步是我的程序“应该提示用户输入包含以下信息的文件的文件名:”已经有预制代码可以使用,一个“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
时。如果我只是删除 gets
并使用 File.new("albums.txt" , "r")
它就可以了。我不确定我做错了什么。
尝试从 mydata.txt\n
读取将引发异常,除非文件名实际上以 \n
结尾,这种情况很少见。这是因为您使用的是#gets,其中包括来自用户按 RETURN 或 ENTER 的换行符。
当您从 STDIN 读取时,您将得到一个行尾(例如,\n
在 *nix 上,\r\n
在 Windows 上)。因此,当您调用#gets 时,几乎总是需要对结果调用 String#chomp。
file_name = gets
#=> "foo\n"
file_name = gets.chomp
#=> "foo"