Как заставить мой скрипт использовать файл CSV, который был задан в терминале в качестве параметра - PullRequest
0 голосов
/ 30 января 2020

Я пытался найти это в Google, но не могу найти "хорошие слова", чтобы найти решение. Так что, может быть, кто-то здесь может мне помочь.

У меня есть скрипт (назовем его script.rb ), который использует File.read для чтения файла CSV с именем somefile.csv , и у меня есть другой файл CSV с именем somefileV2.csv .

Script.rb

csv_text = File.read('/home/XXX/XXX/XXX/somefile.csv')

В настоящее время по умолчанию используется somefile.csv, но я хотел бы знать, если возможно, чтобы мой сценарий использовал файл CSV, который был задан в терминале в качестве параметра, например:

Terminal

home$ script.rb somefileV2

, поэтому вместо чтения файла, который находится в скрипте, он читает другой файл csv ( somefileV2.csv ), который находится в каталоге. Немного раздражает изменение файла вручную каждый раз в самом скрипте.

1 Ответ

1 голос
/ 30 января 2020

Вы можете получить доступ к параметрам (аргументам), используя массив ARGV.

Таким образом, ваша программа может выглядеть так:

default = "/home/XXX/XXX/XXX/somefile.csv"
csv_text = File.read(ARGV[0] || default)

, что дает вам возможность указать имя файла или , если не указан, используйте значение по умолчанию.

ARGV[0] относится к первому, ARGV[1] ко второму аргументу и т. д.

ruby myscript.rb foo bar baz приведет к ARGV Быть ´ ["foo", "bar", "baz"] ´. Обратите внимание, что элементы всегда будут строками. Поэтому, если вам нужно что-то еще (Numbers, Date, ...), вам нужно соответствующим образом обработать это в своей программе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...