如何在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笔记本(如python
xx.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笔记本(如python
xx.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
。BTW
0
1
子流程的结果。调用
。通常,
0
意味着成功,除了
0
之外的任何东西都意味着某种失败。顺便说一句
0
1
子流程的结果。调用
。通常,
0
意味着成功,除了
0
之外的任何东西都意味着某种失败。