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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用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指令,原窗口不会关闭。

 






以上是关于使用Runtime.getRuntime().exec()在java中调用python脚本的主要内容,如果未能解决你的问题,请参考以下文章

为啥 Runtime.getRuntime().exec(startupOracle);没有完全执行命令

如何与 Runtime.getRuntime().exec(command) 程序进行交互?

如何使用 Android 代码更改分辨率(大小)和密度,Runtime.getRuntime().exec(...) 不起作用

使用RunTime.getRunTime().addShutdownHook优雅关闭线程池

使用RunTime.getRunTime().addShutdownHook优雅关闭线程池

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