㈠ 如何用python寫一個腳本,來跑java代碼上的cucumber集成測試
1.直接執行Python腳本代碼
引用 org.python包
1 PythonInterpreter interpreter = new PythonInterpreter();
2 interpreter.exec("days=('mod','Tue','Wed','Thu','Fri','Sat','Sun'); "); ///執行python腳本
睜坦2. 執行python .py文件
1 PythonInterpreter interpreter = new PythonInterpreter();
2 InputStream filepy = new FileInputStream("D:\\demo.py");
3 interpreter.execfile(filepy); ///執行python py文件
4 filepy.close();
3. 使用Runtime.getRuntime()執行腳本文件
這種方式和.net下面調用cmd執行命令的方式類似。如果執行的python腳本有引用第三方包的,建議使用此種方式。使用上面兩種方式會報錯手模java ImportError: No mole named arcpy。畢早緩
1 Process proc = Runtime.getRuntime().exec("python D:\\demo.py");
2 proc.waitFor();
㈡ 怎麼使用java運行python腳本
如果是jython,也就是運行在Jvm上的python的話,可以使用JSR223,JDK1.6已經包含了該擴展包。JSR223是一個用於解析多種腳本語言的庫包,其中包括Jython。除了JSR223包之外,還需要jython-engine.jar包。
ScriptEngine engine = new ScriptEngineManager().getEngineByName("python");
try
{
engine.eval(new FileReader("./script/listing.py"));
}
catch(ScriptException se)
{
}
catch(IOException ie)
{
}
或者參考:http://www.360doc.com/content/10/0608/23/1404822_32043230.shtml
很久之前用過ScriptEngine,對在Jvm上的腳本語言比如jruby,jython,groovy等支持性都很好,有點忘記了。
㈢ java執行python腳本獲取返回值問題
java執行這個腳本並獲取返回值是等待腳本執行完畢再獲取返回的。
我不清楚你是通過什麼方式來執行的。
不過你可以啟動兩個線程,一個線程開始執行腳本,一個線程去獲取輸出。
㈣ Java使用Runtime.getRuntime()去調用python時候,不能夠實時輸出python裡面的print輸出
這個就是管道的問題,在windows下經常會無語遇到這些問題。曾經為這個事情專門寫了一個復雜的演算法。
你換成linux開發環境再試驗 ,就應該不存在這個問題了。 windows對於IO管理,包括標准IO支持的比較怪異。有時候它緩存了,有時候它不生效。