2014-03-19 48 views
0

中注意到命令行參數據我所知,從Java程序中運行另一個Java程序使用是這樣的:如何運行的Python程序,從Java程序

Runtime.getRuntime().exec("/**A command goes here*/") 

但我怎麼會運行一個採用命令行參數的Python程序? 更具體地說,我的Java程序將一個文件作爲命令行參數。然後我將這個文件傳遞給一個Python程序,然後在同一個目錄中生成另一個文件。我將能夠訪問這個新文件。

我可以簡單地叫:

Runtime.getRuntime().exec("python /**directory_of_the_python_program arguments_for_program*/"); 

我也有點糊塗什麼走了進去 「EXEC(...)」。

回答

2

嘗試捕獲標準輸出,這樣你就可以在Python中使用print輸出到該流:

try { 
    Process p = Runtime.getRuntime().exec("python yourProgram.py thearg1 thearg2"); 
    p.waitFor(); 
    InputStream stderr = proc.getOutputStream(); 
    InputStreamReader in = new InputStreamReader(stdout); 
    BufferedReader reader = new BufferedReader(in); 
    String line = null; 
    while ((line = reader.readLine()) != null) { 
     System.out.println("Python says: " + line); 
    } 
    int exitVal = proc.waitFor(); 
} catch (Exception e) { 
    e.printStackTrace(); 
} 

在你的Python程序,輸出到Java程序,使用打印,如:

print 'Hi!' 

要查看Java程序發給你,你可以使用sys.argv

print 'The Java program sent me: ', str(sys.argv) 

注:我不是一個Python專家,並沒有做太多的工作。請告訴我,如果我得到一些錯誤的語法。