2016-03-02 63 views
1

我有一個R腳本,它自己能正常工作,但我需要它是Python腳本的一部分。所以,當我運行python腳本時,R腳本會自動執行。 我使用下面的命令;沒有錯誤,但是不會創建R腳本輸出文件。使用Python通過子程序執行R腳本

import subprocess 

retcode = subprocess.call("C:/Program Files/R/R-3.2.2/bin/Rscript --vanilla T:/2012.R", shell=True) 

非常感謝你提前。

+0

我嘗試了它,但仍然沒有結果,沒有錯誤信息。 – user460213

+2

簡單測試程序會發生什麼情況:'print.hw < - function(){print(「hello world」) }; print.hw()' –

+0

Rscript解釋器的路徑是否存在語法錯誤?我的直覺是你需要逃離路徑中的任何空間角色。 C:/ Program Files/R/R-3.2.2/bin/Rscript – IcarianComplex

回答

1

只需將您的字符串命令,在支架和字符串分解成獨立的組件的功能的第一個參數預計參數列表,每doc

subprocess.call(參數,*,標準輸入=無,由於輸出=無,標準錯誤=無, 殼=假)

import subprocess 

retcode = subprocess.call(['C:/Program Files/R/R-3.2.2/bin/Rscript', '--vanilla', 
          'T:/2012.R'], shell=True) 

或者,把它分解成多個字符串:

command = 'C:/Program Files/R/R-3.2.2/bin/Rscript' 
arg = '--vanilla' 
path2script = 'T:/2012.R' 

retcode = subprocess.call([command, arg, path2script], shell=True)