Запуск сценария R из командной строки (для выполнения с python)
В настоящее время я пытаюсь запустить R-скрипт из командной строки (моя конечная цель – выполнить его как последнюю строку скрипта python). Я не уверен, что такое командный файл, или как сделать исполняемый файл R-скрипта. В настоящее время он сохраняется как .R-файл. Он работает, когда я запускаю его из R.
Как это выполнить из строки командной строки Windows? Нужно ли загружать что-то под названием Rscript.exe? Я просто сохраняю свой R-скрипт как .exe-файл? Просьба сообщить о самом простом способе достижения этого.
R: версия 3.3 python: версия 3.x os: windows
- Лучшая практика для рекурсивного консольного инструмента в Python
- Пауза в Python
- Почему нет <работы для чтения в файле из командной строки (простой код Python)?
- Как запустить ipython из оболочки, запустив «python …»?
- Перенаправить вывод интерактивных команд python / ipython в файлы или переменные
Вероятно, у вас уже есть R, так как вы уже можете запустить свой скрипт.
Все, что вам нужно сделать, это найти его двоичные файлы (файл Rscript.exe).
Затем откройте командную строку Windows ([cmd] + [R]> введите: "cmd"> [enter])
Введите полный путь к R.exe, а затем полный путь к вашему скрипту.
Как уже упоминалось, Rscript.exe автоматизированный исполняемый файл для запуска R-скриптов поставляется с любой установкой R (обычно находится в папке bin), а упоминания @Dirk Eddelbuettel – рекомендуемая автоматическая версия. И в Python вы можете запускать любую внешнюю программу в качестве подпроцесса с различными типами, включая вызов , check_output , check_call или Popen , а последний из них предоставляет больше возможностей, таких как захват ошибок в дочернем процессе.
Если каталог R находится в вашей переменной окружения PATH , вам не нужно включать полный путь к RScript.exe, а только имя программы, Rscript . И обратите внимание, что это довольно простой процесс для операционных систем Linux или Mac.
command = 'C:/R-3.3/bin/Rscript.exe' # OR command = 'Rscript' path2script = 'C:/Path/To/R/Script.R' arg = '--vanilla' # CHECK_CALL VERSION retval = subprocess.check_call([command, arg, path2script], shell=True) # CALL VERSION retval = subprocess.call(["'Rscript' 'C:/Path/To/R/Script.R'"]) # POPEN VERSION (W/ CWD AND OUTPUT/ERROR CAPTURE) curdir = 'C:/Path/To/R/Script' p = subprocess.Popen(['Rscript', 'Script.R'], cwd=curdir, stdin = subprocess.PIPE, stdout = subprocess.PIPE, stderr = subprocess.PIPE) output, error = p.communicate() if p.returncode == 0: print('R OUTPUT:\n {0}'.format(output.decode("utf-8"))) else: print('R ERROR:\n {0}'.format(error.decode("utf-8")))
У вас уже есть Rscript
, он поставляется с вашей версией R. Если R.exe
, Rgui.exe
, … находятся на вашем пути, то это также Rscript.exe
.
Ваш звонок из Python может быть только Rscript myFile.R
. Rscript намного лучше, чем R BATCH CMD ...
и другие очень старые и устаревшие шаблоны использования.
- Значение self .__ dict__ = self в определении класса
- Кодовая страница chcp 65001 приводит к завершению программы без какой-либо ошибки
- Командная строка Windows Не работает с Python
- Bash или GoogleCL: новая строка в строковом параметре
- Отсутствует аргумент argpse в python 3
- Python, используя os.system – Есть ли способ, чтобы скрипт Python прошел мимо этого, не дожидаясь завершения вызова?
- Поверните приложение или скрипт в команду оболочки
- Python: как запускать тесты, выполненные с помощью unittest
- Есть ли библиотека Python, которая облегчает создание утилит CLI, таких как команды управления Django?
- Bash: переменная в одиночной кавычке
- sys.argv не принимает предоставленный аргумент в python 3