1、不传参调用
package test;
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class demo {
public static void main(String[] args) throws Exception
{
try{
String s;
Process rt=Runtime.getRuntime().exec("python D:\\eclipe\\python\\controller.py");
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(rt.getInputStream()));
while((s=bufferedReader.readLine()) != null){
System.out.println(s);}
rt.waitFor();
}catch(Exception e ){
e.printStackTrace();
}
}
}
如果python 中有print 则必须加Buffer那三行,不然数据不能输出,会导致线程阻塞
2、传参
python 代码test.py
options,args = getopt.getopt(sys.argv[1:], "", ["caption=","proc_name="])
if options != []:
for name,value in options:
if name == '--caption':
CAPTION = value
if name == '--proc_name':
PROC_NAME = value
首先要import getopt模块,
函数getopt(args, shortopts, longopts = [])
第一个一般是固定格式,如代码所写,第二个是短格式(-)第二个是长格式(--),比较习惯用长格式
代码中第一行的意思是,传入两个参数,第一个参数名称为caption,第二个为proc_name,长格式
传递写法
python test.py --caption value_caption --proc_name value_proc_name
修改后的java代码
package test; import java.io.BufferedReader; import java.io.InputStreamReader; public class demo { public static void main(String[] args) throws Exception { try{ String s; Process rt=Runtime.getRuntime().exec("python D:\\eclipe\\python\\controller.py --caption value --proc_name value"); BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(rt.getInputStream())); while((s=bufferedReader.readLine()) != null){ System.out.println(s);} rt.waitFor(); }catch(Exception e ){ e.printStackTrace(); } } }