我面临着使用os.system()或子进程()通过Python运行Rscript的问题。
使用os.system()通过python运行命令对我来说一般都很好(例如,对于gdalwarp.exe),但对Rscript.exe则不起作用。
我唯一能看到的区别是路径上的空格。
避免路径中的空格问题很容易在CMD窗口中通过在引号中放置路径来克服。执行以下命令是成功的。
"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'])有人看到我做错什么了吗?预先谢谢你,艾克
发布于 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")工作得很好。两天前应该试过的..。
..。但现在我是一只快乐的猴子了
发布于 2015-04-10 12:49:10
现在可能太晚了,我已经看到您解决了这个问题,但是我遇到了类似的问题(尽管在Linux系统中),它现在可能会帮助其他人;这个命令在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.R和read_lengths_batch.txt,它也能正常工作。
希望它能帮到别人!
https://stackoverflow.com/questions/28514769
复制相似问题