如何在windows上使用系统调用从python中正确获取R sessionInfo()?
我想使用如何在windows上使用系统调用从python中正确获取R sessionInfo()?,python,r,subprocess,Python,R,Subprocess,我想使用subprocess.call()在python脚本中打印当前的R会话信息。我不熟悉使用subprocess.call(),我研究了几种从python访问R脚本的方法,所以我尝试了相同的方法,但无法正确打印当前R会话信息。我正在使用windows,我正在从termianl打开jupyter笔记本。以下是我尝试过的: 我的尝试: 我只想从python访问一些R内置函数(一些baseR函数,如sessionInfo()): import subprocess command = 'C:/P
subprocess.call()
在python脚本中打印当前的R会话信息。我不熟悉使用subprocess.call()
,我研究了几种从python访问R脚本的方法,所以我尝试了相同的方法,但无法正确打印当前R会话信息。我正在使用windows,我正在从termianl打开jupyter笔记本。以下是我尝试过的:
我的尝试:
我只想从python访问一些R内置函数(一些baseR函数,如sessionInfo()
):
import subprocess
command = 'C:/Program Files/R/R-3.6.3/bin/Rscript'
arg = '--vanilla'
funcs = 'sessionInfo()'
retcode = subprocess.call([command, arg, funcs], shell=True)
但这无法正确打印R会话信息,我得到的是0
或1
。我认为我从python调用R内置函数的方法是不正确的。有人能给我一个可行的解决方案来实现这一点吗?我的尝试有什么问题?如何从python脚本中获取当前R会话信息()?如何从python访问R内置函数?有什么想法吗?谢谢这对我很有用:
# Python 3.7.6 (default, Dec 30 2019, 19:38:28)
# [Clang 11.0.0 (clang-1100.0.33.16)] on darwin
import subprocess
subprocess.call([
'Rscript',
'--vanilla',
'-e',
'sessionInfo()'
])
这对我很有用:
# Python 3.7.6 (default, Dec 30 2019, 19:38:28)
# [Clang 11.0.0 (clang-1100.0.33.16)] on darwin
import subprocess
subprocess.call([
'Rscript',
'--vanilla',
'-e',
'sessionInfo()'
])
Rscript指的是什么?在我的机器中,它的路径像:
C:\ProgramFiles\R\R-3.6.3\bin\x64\Rscript
?您能否添加一些更详细的步骤来设置正确的设置?在终端或jupter笔记本(如pythonxx.py
)中,我在哪里调用subprocess.call()
?我打算调用xx.py
文件。你需要分别计算路径。。。您在最初的帖子中提到了一个C:/path,希望它能像用其工作的完整路径替换Rscript一样简单。那么我第一次尝试的问题是什么?我想从中吸取教训。尽我所能,你只是缺少了-e
。没有sessionInfo()
的IINM将被解释为文件名。我不太熟悉windows,但IIRC您应该能够打开windows shell并运行C:\\path\to\Rscript-e“sessionInfo()”
--子进程。call
只是在模仿。所以我可能会先让它在终端工作。请参见R中的?Rscript
和/或终端中的Rscript--help
Rscript指的是什么?在我的机器中,它的路径像:C:\ProgramFiles\R\R-3.6.3\bin\x64\Rscript
?您能否添加一些更详细的步骤来设置正确的设置?在终端或jupter笔记本(如pythonxx.py
)中,我在哪里调用subprocess.call()
?我打算调用xx.py
文件。你需要分别计算路径。。。您在最初的帖子中提到了一个C:/path,希望它能像用其工作的完整路径替换Rscript一样简单。那么我第一次尝试的问题是什么?我想从中吸取教训。尽我所能,你只是缺少了-e
。没有sessionInfo()
的IINM将被解释为文件名。我不太熟悉windows,但IIRC您应该能够打开windows shell并运行C:\\path\to\Rscript-e“sessionInfo()”
--子进程。call
只是在模仿。所以我可能会先让它在终端工作。请参见R中的?Rscript
和/或终端中的Rscript--help
。BTW0
和1
是子流程的结果。调用。通常,0
意味着成功,除了0
之外的任何东西都意味着某种失败。顺便说一句0
和1
是子流程的结果。调用。通常,0
意味着成功,除了0
之外的任何东西都意味着某种失败。