运行 Rscript 通过 Python 使用 os.system() 或 subprocess()

Running Rscript via Python using os.system() or subprocess()

我遇到问题 运行使用 os.system() 或 subprocess() 通过 Python 设置 Rscript。

通过 python 使用 os.system() 到 运行 命令通常对我来说很好(例如 gdalwarp.exe),但对 Rscript.exe 就不行。

我能看到的唯一区别是路径中的空格。

通过将路径放在引号中,在 CMD-window 中很容易解决路径中的空格问题。 执行以下命令成功。

"C:/Program Files/R/R-3.0.2/bin/Rscript.exe" "D:/.../otsu_Script.R"

但我坚持 Python。 到目前为止我用 python:

尝试了什么
os.system("C:/Program Files/R/R-3.0.2/bin/Rscript.exe" "D:/.../otsu_Script.R")
os.system(r"C:/Program Files/R/R-3.0.2/bin/Rscript.exe" "D:/.../otsu_Script.R")
os.system(r'"C:/Program Files/R/R-3.0.2/bin/Rscript.exe" "D:/.../otsu_Script.R"')
subprocess.call([r'C:/Program Files/R/R-3.0.2/bin/Rscript.exe', r'D:/.../otsu_Script.R'])

有人看到我做错了什么吗? 提前致谢, 艾克

在对这么简单的问题动了脑筋之后。我决定将 RStatistics 重新安装到没有空格或点的路径,例如: C:/R/bin/Rscript.exe

现在 subprocess.call(["C:/R/bin/Rscript.exe", "D:/otsu_Script.R"] )os.system("C:/R/bin/Rscript.exe D:/otsu_Script.R") 工作正常。 应该在两天前尝试过...

...但无论如何我现在是一只快乐的猴子:-)

现在可能已经太晚了,我已经看到你解决了这个问题,但我也遇到了类似的问题(尽管在 Linux 系统中),它现在可能对其他人有帮助;尽管在 terminal/command-line.

中直接起作用,但在 python 中调用此命令时不起作用
os.system("R CMD BATCH ./read_lengths_batch.R")

我尝试了很多解决方案,包括 subprocess 和其他解决方案,但发现它比这更容易。在我的例子中,我知道它在 Windows 中可能有所不同,我只需要在调用结束时添加一个 & 到后台的 运行。不知何故,R 似乎会关闭 Python 脚本而不是执行它的工作。

os.system("R CMD BATCH ./read_lengths_batch.R &")

奇怪的是,如果在我的文件夹中复制带有 .txt 扩展名的相同文件,它也能正常工作:read_lengths_batch.Rread_lengths_batch.txt.

希望对大家有所帮助!