2014-01-07 69 views
0

我正尝试使用os.chdir()os.system()从Python运行R中的简单脚本。我能够从Windows命令提示符运行代码,所以我不认为从Python运行它会是一个问题。我的[R程序位于C:/Program Files/R/R-3.0.2/bin/i386和将R脚本是C:/Users/Kyle/Desktop/script.R所以我的Python函数是这样的:使用操作系统模块从Python运行R脚本

def runScript(): 
    os.chdir('C:/Program Files/R/R-3.0.2/bin/i386') 
    returnCode = os.system('R --vanilla < C:/Users/Kyle/Desktop/script.R') 
    print returnCode 
    return 

什么,我想它做这个不做,任何返回1.返回码想法?

P.S.当我将Windows命令提示符中的目录更改为上述目录并运行R --vanilla < C:/Users/Kyle/Desktop/script.R时,它的工作方式与预期的相同。

回答

0

什么是与

def runScript(): 
    os.chdir('') 
    returnCode = os.system(r'C:/Program Files/R/R-3.0.2/bin/i386/R --vanilla < C:/Users/Kyle/Desktop/script.R') 
    print returnCode 
    return returnCode 

问题?

+0

它非常快速地闪烁Windows命令提示符,然后像以前一样返回1。我对可执行的C程序做了很多系统调用,我不确定为什么这个程序不按我想要的方式工作。 – Thetravellingfool

+0

os.system已被弃用。尝试使用子进程python模块。 subprocess.call是你正在寻找的功能 – praveen

+0

subprocess.call('C:/ Program Files/R/R-3.0.2/bin/i386/R --vanilla praveen

0

按照os.system documentation

上的cmd.exe系统(Windows NT中,2000和XP)这是命令运行的退出状态

这意味着你的[R脚本肯定退出命令“退出(1)”或有错误,由R解释器的default error handler处理。

+0

我相信我必须在某处出现错误,我认为1来自Python,告诉我它不能做我想做的事。这很奇怪.. – Thetravellingfool

相关问题