2014-01-12 74 views
1

我想運行一個名爲例如foo的python腳本。和我有absoulute路徑,讓說: /用戶/我/ pythonscripts/如何使用絕對路徑從Java運行Python文件?

我曾嘗試運行:

String cmd="/Users/me/pythonscripts/" 
String py="foo" 
Runtime.getRuntime().exec("cd "+cmd); 
Runtime.getRuntime().exec("python "+py+".py"); 

但這並運行Python文件。

+0

查看以下鏈接:http://norwied.wordpress.com/2012/ 03/28/call-python-script-from-java-app/ –

+0

您可能還會看到[jython](http://www.jython.org),它將在Java VM上運行python腳本 – Mark

回答

3

嘗試使用更多的東西一樣......

Runtime.getRuntime().exec("python "+cmd + py + ".py"); 

相反。每個exec是它自己的進程和多個exec具有彼此沒有關係......

你也應該考慮使用替代ProcessBuilder,因爲這提供了可配置的上一個大臺階,例如,你可以改變的執行路徑背景...

ProcessBuilder pb = new ProcessBuilder("python", py + ".py"); 
pb.directory(new File(cmd)); 
pb.redirectError(); 
//... 
Process p = pb.start(); 

此外,要小心,Python有一個問題,它的輸出流,這可能會阻止Java的讀取它,直到它完全如果在所有完成...

有關詳細信息,看看Java: is there a way to run a system command and print the output during execution?

此外,還要確保python是shell的搜索路徑內,否則,你將需要指定的完整路徑命令以及

+0

感謝您使用ProcessBuilder提示,超級有用!現在效果很好。 – Others

+0

它只是沒有執行python文件,不知道有什麼問題。儘管我提前評論了一下,但我使用流程生成器來完成這項工作。 – Others

相關問題