2014-01-07 97 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

相關問題