舉例有一個Python腳本叫test.py,現在想要在Java里調用這個腳本。假定這個test.py里面使用了拓展的包,使得pythoninterpreter之類內嵌的編譯器無法使用,那么只能采用java調用控制台進程,即 Runtime.getRuntime().exec(),來運行這個python腳本。在windows下運行這個程序,假如是參考了一些百度來的被轉載了無數遍的文章,很有可能運行結果是根本沒有執行這個腳本。經過測試,在java中執行如下代碼可以成功運行test.py文件:
- <pre name="code" class="java">Process proc = Runtime.getRuntime().exec("cmd /c python "+filepath+"test.py"); //filepath是test.py的地址。可以取相對地址,以項目所在地址為根目錄
- proc.waitFor();
在使用 cmd /c 時不會彈出python輸出窗口,可以使用 cmd /k start 前綴以彈出一個新的控制台窗口並顯示python輸出
cmd /c dir 是執行完dir命令后關閉命令窗口。
cmd /k dir 是執行完dir命令后不關閉命令窗口。
cmd /c start dir 會打開一個新窗口后執行dir指令,原窗口會關閉。
cmd /k start dir 會打開一個新窗口后執行dir指令,原窗口不會關閉。