Я пытаюсь следовать этому блогу о том, как выполнить R-скрипт из Python.У меня R-скрипт работает нормально из командной строки с использованием Rscript.
Вот мой код Python:
import subprocess
import os
command = "C:\Program Files\R\R-3.4.4\bin\Rscript"
path2script = os.getcwd() + "\max.R" # gives me the absolute path to the R script
args = ["11", "3", "9", "42"]
cmd = [command, path2script] + args
x = subprocess.check_output(cmd, universal_newlines = True)
, который дает мне эту ошибку:
FileNotFoundError: [WinError 2] Системе не удается найти указанный файл
Я прочитал много SO-сообщений об этой ошибке, и в большинстве случаев возникает проблема с попыткой вызова системные команды вроде dir
или передача аргументов check_output
в неправильном порядке , но в моем случае я действительно не вижу, что должно идти не так.
После некоторые советы Я попытался построить строку для cmd
вместо списка, а затем передать ее check_output
, используя аргумент shell = True
- когда я это делаю, я получаю CalledProcessError: returned non-zero exit status 1.
Я предполагаю, что этот код, который в точности соответствует тому, как он появился в блоге, кроме добавления абсолютного пути к файлу, сейчас не работает, поскольку поведение check_output
изменилось с 2015 года ...
Может кто-нибудь помочь?
Вот трассировка стека:
Traceback (most recent call last):
File "<ipython-input-2-3a0151808726>", line 1, in <module>
runfile('C:/Users/TomWagstaff/Documents/Raising IT/Projects/15 AdWords/Python_R_test/run_max.py', wdir='C:/Users/TomWagstaff/Documents/Raising IT/Projects/15 AdWords/Python_R_test')
File "C:\Users\TomWagstaff\Anaconda3\envs\adwords\lib\site-packages\spyder\utils\site\sitecustomize.py", line 705, in runfile
execfile(filename, namespace)
File "C:\Users\TomWagstaff\Anaconda3\envs\adwords\lib\site-packages\spyder\utils\site\sitecustomize.py", line 102, in execfile
exec(compile(f.read(), filename, 'exec'), namespace)
File "C:/Users/TomWagstaff/Documents/Raising IT/Projects/15 AdWords/Python_R_test/run_max.py", line 31, in <module>
x = subprocess.check_output(cmd, universal_newlines = True)
File "C:\Users\TomWagstaff\Anaconda3\envs\adwords\lib\subprocess.py", line 336, in check_output
**kwargs).stdout
File "C:\Users\TomWagstaff\Anaconda3\envs\adwords\lib\subprocess.py", line 403, in run
with Popen(*popenargs, **kwargs) as process:
File "C:\Users\TomWagstaff\Anaconda3\envs\adwords\lib\site-packages\spyder\utils\site\sitecustomize.py", line 210, in __init__
super(SubprocessPopen, self).__init__(*args, **kwargs)
File "C:\Users\TomWagstaff\Anaconda3\envs\adwords\lib\subprocess.py", line 709, in __init__
restore_signals, start_new_session)
File "C:\Users\TomWagstaff\Anaconda3\envs\adwords\lib\subprocess.py", line 997, in _execute_child
startupinfo)
FileNotFoundError: [WinError 2] The system cannot find the file specified