2014-05-10 44 views
0

我知道有很多類似的問題,但沒有解決我的問題執行Python ...從Java

所以,我想使用的ProcessBuilder從Java執行Python腳本...

下面是我寫的,並且不工作的方法:

public void stemPosts(String scriptPath, String inputFile, String outputFile) 
     throws IOException { 
    ProcessBuilder process = new ProcessBuilder("python", scriptPath, 
      inputFile, outputFile); 
    process.start(); 
} 

,這裏是方法調用(<user_path>僅僅是隱藏個人信息):

dataManager.stemPosts(
      "D:/<user_path>/stemmer/Croatian_stemmer.py", 
      "D:/<user_path>/stemmer/posts.txt", 
      "D:/<user_path>/stemmer/stemmedPosts.txt"); 

第一個參數是腳本,第二個參數是第一個腳本參數(INPUTFILE)和第三個參數是第二個腳本參數(OUTPUTFILE)...

執行在cmd中很簡單:python Croatian_stemmer.py posts.txt stemmedPosts.txt和工程...

以上代碼只是創建輸出文件,但它不填充數據...

我試圖改變文件分隔符,並沒有幫助...

回答

1

對於初學者我想看看你看到什麼輸出腳本的執行重定向您的ProcessBuilder輸出,其描述爲here

我的預感是它與PYTHONPATH或腳本中的錯誤有關,但沒有看到腳本或執行輸出,這是不可能知道的。

+0

所以,我按照你的建議重定向了它,但沒有打印出來。 接下來,python路徑設置正確; 這裏是腳本的原始形式:http://pastebin.com/0PNQrjZx – mister11

+1

我想我看到它 - 你的python腳本假設'rules.txt'和'transformations.txt'在當前工作目錄中。如果你從終端運行腳本*除了stemmer目錄,你可能會遇到同樣的問題。運行腳本時,JVM工作目錄不會放在stemmer內部。讓你的python腳本找出它自己的絕對路徑和參考rules.txt和transformations.txt基於它 - 請參閱http://stackoverflow.com/questions/247770/retrieving-python-module-path – orpheist

+0

還有一個注意你也可以可能只是使用sys.argv [0] – orpheist