举例有一个Python脚本叫test.py,现在想要在Java里调用这个脚本。假定这个test.py里面使用了拓展的包,使得pythoninterpreter之类内嵌的编译器无法使用,那么只能采用java调用控制台进程,即 Runtime.getRuntime().exec(),来运行这个python脚本。在windows下运行这个程序,假如是参考了一些百度来的被转载了无数遍的文章,很有可能运行结果是根本没有执行这个脚本。经过测试,在java中执行如下代码可以成功运行test.py文件:

 

[java] view plain copy
 
  1. <pre name="code" class="java">Process proc = Runtime.getRuntime().exec("cmd /c python "+filepath+"test.py");    //filepath是test.py的地址。可以取相对地址,以项目所在地址为根目录  
  2.         proc.waitFor();  
[java] view plain copy
 
  1.   

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

 posted on 2016-11-25 09:13  大雄fcl  阅读(3806)  评论(1编辑  收藏  举报