У меня есть команда, сохраненная в текстовом файле, которую я хочу выполнить, используя subprocess.run()
из R, используя пакет reticulate
.
У меня есть каталог с тремя файлами:
test_command.txt, который содержит команду
touch foo.txt
run_command.py:
import subprocess
import os
subprocess.check_output('bash test_command.txt')
print(os.path.isfile("foo.txt")) # Check if the command was actually executed properly
- run_from_r.R:
library(reticulate)
use_condaenv("my_env") # Same conda environment as used for python
source_python("run_command.py")
Когда я запускаю run_command.py напрямую, создается foo.txt и возвращается True
.
Однако, когда я запускаю из R с помощью run_from_r.R, я получаю следующее сообщение:
Error in py_run_file_impl(file, local, convert) :
OSError: [WinError 6] The handle is invalid
Detailed traceback:
File "<string>", line 5, in <module>
File "C:\Users\Danie\miniconda3\envs\wildcats_summer_env\lib\subprocess.py", line 411, in check_output
**kwargs).stdout
File "C:\Users\Danie\miniconda3\envs\wildcats_summer_env\lib\subprocess.py", line 488, in run
with Popen(*popenargs, **kwargs) as process:
File "C:\Users\Danie\miniconda3\envs\wildcats_summer_env\lib\subprocess.py", line 753, in __init__
errread, errwrite) = self._get_handles(stdin, stdout, stderr)
File "C:\Users\Danie\miniconda3\envs\wildcats_summer_env\lib\subprocess.py", line 1054, in _get_handles
p2cread = _winapi.GetStdHandle(_winapi.STD_INPUT_HANDLE)
system("bash test_command.txt")
правильно работает в R.
Есть идеи, что означает это сообщение об ошибке и как заставить команду работать правильно при использовании subprocess.check_output/run
и reticulate
?
Спасибо!