Чтение файлов с помощью ruby ​​через командную строку - PullRequest
0 голосов
/ 17 мая 2018

Итак, я пытаюсь прочитать файл в ruby, указав имя в командной строке. Пока мой код выглядит следующим образом:

puts "What is the name of the file to read?"
fileName = gets.chomp

file = $stdin.read.strip
f = File.open(file, “r”)
f.each_line { |line|
    puts line
    }

Что я вижу, так это чтение входных данных через командную строку, но не чтение файла. Например, я могу передать «input.txt», «code.txt» и «sonic.txt» в качестве имен файлов, но программа просто возвращается к началу, ища другой ввод. Как я могу изменить это, чтобы прочитать файл по имени, а затем выложить содержимое этого файла?

1 Ответ

0 голосов
/ 17 мая 2018

Ваши проблемы:

  • Линия fileName = gets.chomp бесполезна. Удалить это.
  • file = $stdin.read.strip не позволит вам завершить ввод. Используйте gets для получения ввода пользователя из командной строки.
  • Вы используете неверную цитату в своем параметре “r” для File.open.
  • Вы не закрываете файл после прочтения. Лучше использовать блочную форму File.open, чтобы обеспечить закрытие файла после использования.

Вот минимальное исправление:

puts "What is the name of the file to read?"
file = gets.chomp
File.open(file, "r"){|f|
  f.each_line {|line|
    puts line
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...