我有一个命令保存在一个文本文件中,我希望使用subprocess.run()从R中使用reticulate包执行该命令。
我有一个有三个文件的目录:
touch foo.txtimport subprocess
import os
subprocess.check_output('bash test_command.txt')
print(os.path.isfile("foo.txt")) # Check if the command was actually executed properlylibrary(reticulate)
use_condaenv("my_env") # Same conda environment as used for python
source_python("run_command.py")当我直接运行run_command.py时,会创建foo.txt,并返回True。
然而,当我使用run_from_r.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运行时使该命令正确运行?
谢谢!
发布于 2020-07-21 14:36:05
我似乎通过以下方法修复了它:
subprocess.run(['bash', 'test_command.txt'], stdout=subprocess.PIPE,
stderr=subprocess.STDOUT, stdin=subprocess.DEVNULL)来自Python running as Windows Service: OSError: [WinError 6] The handle is invalid
https://stackoverflow.com/questions/63016429
复制相似问题