java命令行语句调用python脚本及相关问题

最近做一个项目需要用到java调用python,于是便用到了java命令行语句

 try {
	            Process pr = Runtime.getRuntime().exec("python D:\\workplace\\recognition\\PicPro_handwriting.py");//Runtime.exec 方法创建一个本机进程,并返回 Process 子类的一个实例,该实例可用来控制进程并获取相关信息。
	            BufferedReader in = new BufferedReader(new InputStreamReader(pr.getInputStream()));//建立一个BufferedReader对象,从字符输入流中读取文本即读取python脚本
	            String line;
	            while ((line = in.readLine()) != null) {
	                
	                System.out.println(line);
	            }
	            in.close();
	            int r2=pr.waitFor();//等待进程运行完成再向下执行
	            System.out.println("end"+r2);
	        } catch (Exception e1) {
	            e1.printStackTrace();
	        }

 Process类是一个抽象类(所有的方法均是抽象的),封装了一个进程(即一个执行程序)并提供了执行从进程输入、执行输出到进程、等待进程完成、检查进程的退出状态以及销毁(杀掉)进程的方法;

Runtime.getRuntime().exec()方法可以在java程序里运行外部程序;

在上面的程序中,第一行的“.D:\\workplace\\recognition\\KNN_handwriting.py”是要执行的程序名,Runtime.getRuntime()返回当前应用程序的Runtime对象,该对象的exec()方法指示Java虚拟机创建一个子进程执行指定的可执行程序,并返回与该子进程对应的Process对象实例。通过Process可以控制该子进程的执行或获取该子进程的信息。

其实原理很简单就是相当于在cmd中运行exec()中的语句,比如说在我上面的代码中就是相当于在cmd中输入“python D:\\workplace\\recognition\\PicPro_handwriting.py”然后运行。

在用这种方法时一定要注意路径的问题,调用python脚本的路径一定要是绝对路径,要不然就会找不到;

想要看python脚本调用是否成功第一种办法是在cmd中运行exec()中的语句,第二种是输出pr.waitFor()的返回值

若返回值为0则说明调用成功,若是返回值是其它数字则代表调用失败。


猜你喜欢

转载自blog.csdn.net/qq_41671861/article/details/80556882