我遇到了使用os.system()或subprocess()通过Python运行Rscript的问题。
使用os.system()通过python运行命令通常对我来说很好(例如使用gdalwarp.exe),而不是使用Rscript.exe。
我能看到的唯一区别是path中的空格。
避免path中的空间问题很容易通过将path放在引号中在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'])
有人看到我做错了吗? 在此先感谢,艾克
在这样一个简单的问题上得到精神后。 我决定重新安装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系统中),现在可能会帮助别人。 这个命令在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
。
希望它可以帮助别人!