使用Runtime.getRuntime().exec()在java中调用python脚本

举例有一个Python脚本叫test.py,现在想要在Java里调用这个脚本。假定这个test.py里面使用了拓展的包,使得pythoninterpreter之类内嵌的编译器无法使用,那么只能采用java调用控制台进程,即 Runtime.getRuntime().exec(),来运行这个python脚本。

在windows下运行这个程序,假如是参考了一些百度来的被转载了无数遍的文章,很有可能运行结果是根本没有执行这个脚本。经过测试,在java中执行如下代码可以成功运行test.py文件:

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
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指令,原窗口不会关闭。

 
原文地址:https://www.cnblogs.com/111testing/p/7781744.html