首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用os.system()或子进程()通过Python运行Rscript

使用os.system()或子进程()通过Python运行Rscript
EN

Stack Overflow用户
提问于 2015-02-14 10:43:38
回答 2查看 2.4K关注 0票数 0

我面临着使用os.system()或子进程()通过Python运行Rscript的问题。

使用os.system()通过python运行命令对我来说一般都很好(例如,对于gdalwarp.exe),但对Rscript.exe则不起作用。

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

避免路径中的空格问题很容易在CMD窗口中通过在引号中放置路径来克服。执行以下命令是成功的。

代码语言:javascript
运行
复制
"C:/Program Files/R/R-3.0.2/bin/Rscript.exe" "D:/.../otsu_Script.R"

但我被Python困住了。到目前为止,我对python所做的尝试是:

代码语言:javascript
运行
复制
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'])

有人看到我做错什么了吗?预先谢谢你,艾克

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-02-15 10:02:23

在对这样一个简单的问题有了理智之后。我决定将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")工作得很好。两天前应该试过的..。

..。但现在我是一只快乐的猴子了

票数 1
EN

Stack Overflow用户

发布于 2015-04-10 12:49:10

现在可能太晚了,我已经看到您解决了这个问题,但是我遇到了类似的问题(尽管在Linux系统中),它现在可能会帮助其他人;这个命令在python内部被调用时不起作用,尽管它直接在终端/命令行上工作。

代码语言:javascript
运行
复制
os.system("R CMD BATCH ./read_lengths_batch.R")

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

代码语言:javascript
运行
复制
os.system("R CMD BATCH ./read_lengths_batch.R &")

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

希望它能帮到别人!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28514769

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档