java 调python 文件(使用Anaconda的环境)

这篇博客主要记录的是使用命令行调用python。在命令行调用python文件过程中,如果python文件中包含了很多其他的python的库,就可能会在运行的时候出现No model named XX的错误。如果你的程序在pycharm中运行没有问题的话,可以按照下面方式来写。
1.首先建立一个系统环境变量anacoda(后面可以通过java代码自动获取到这个路径) ,里面的值填入你的anaconda下面这个scripts目录的路径
在这里插入图片描述
在这里插入图片描述2.在java代码中获取到anaconda的路径并对格式进行转换

String condaPath = System.getenv("anaconda");
condaPath =condaPath.replace("\\","\\\\");

3.调用runtime方法执行,这里需要执行两条命令,使用的&&连接(要使用conda环境也主要是第一条命令,即执行anaconda scripts文件夹下的activate.bat文件)我这里的python文件的路径也是提前获取的,读者可以根据需要直接指定具体的路径。注意斜杠符号,不要出错即可

Process process = Runtime.getRuntime().exec(condaPath+"\\activate.bat && python "+path+"tree.py");

4.读取结果,可以将错误流的内容也读取出来

BufferedReader in = new BufferedReader(new InputStreamReader(process.getInputStream()));
in = new BufferedReader(new InputStreamReader(process.getInputStream(),"gbk"));
//接收错误流
BufferedReader    isError = new BufferedReader(new InputStreamReader(process.getErrorStream(),"gbk"));
StringBuilder sb= new StringBuilder();
StringBuilder sbError= new StringBuilder();
String line=null;
String lineError= null;
while ((line = in.readLine()) != null) {
    sb.append(line);
    sb.append("\n");
}
System.out.println(sb);

while ((lineError= isError.readLine()) != null) {
    sbError.append(lineError);
    sbError.append("\n");
}
System.out.println(sbError);

全部代码:

 String path = System.getProperty("user.dir")+"\\src\\main\\java\\python\\";//获取到项目目录后,补充完整python文件所在目录
            path =path.replace("\\","\\\\");
            String condaPath = System.getenv("anaconda");//获取conda的系统变量
            condaPath =condaPath.replace("\\","\\\\");
            System.out.println(condaPath);
            Process process = Runtime.getRuntime().exec(condaPath+"\\activate.bat && python "+path+"tree.py");
            BufferedReader in = new BufferedReader(new InputStreamReader(process.getInputStream()));
            in = new BufferedReader(new InputStreamReader(process.getInputStream(),"gbk"));
            //接收错误流
            BufferedReader    isError = new BufferedReader(new InputStreamReader(process.getErrorStream(),"gbk"));
            StringBuilder sb= new StringBuilder();
            StringBuilder sbError= new StringBuilder();
            String line=null;
            String lineError= null;
            while ((line = in.readLine()) != null) {
                sb.append(line);
                sb.append("\n");
            }
            System.out.println(sb);

            while ((lineError= isError.readLine()) != null) {
                sbError.append(lineError);
                sbError.append("\n");
            }
            System.out.println(sbError);
            in.close();
            isError.close();

            return sb.toString();
展开阅读全文

人工智能深度学习卷积神经网络入门

10-23
"java大数据人工智能培训学校全套教材"系列课程由1000集视频构成,基本就 是1)时下流行的java培训学校主流内部教材,2)和市面上培训学校的通 行的课程体系几乎一样。所以这套课程都能自己学下来,等于上了培训学校一次,完全可以找个java工程师的工作了。   通过学习卷积神经网络概述,为什么引入神经网络来做识别,判断,预测,训练模型,激活函数,sigmoid激活函数,导数和切线,sigmoid激活函数如何求导,链式法则,梯度,梯度下降法与delta法则,BP(back propagation)误差逆传播神经网络,卷积到底有什么作用?如何做到特征提取,池化的名字由来,dropout,Anaconda Prompt的用法,Jupyter notebook的用法,Spyder的用法,建立安装Tensorflow所需的Anaconda虚拟环境,如何在Anaconda虚拟环境安装Tensorflow与Keras概念等让大家对人工智能,卷积神经网络快速入门。 课程特色:专业细致,偏案例,理论强。 课程软件使用Anaconda,Spyder,Jupyter notebook 重要声明: 1) 如果感觉噪音大,可以选择不用耳机,加音箱或用电脑原声  2) 既然我们的名字叫人工智能深度学习卷积神经网络入门,这个课程的特点就在于成本最低的, 让你最快速的,最容易的入门。人工智能深度学习卷积神经网络入门的最大的难点在于入门入不了,从而最终放弃。俗话说师傅领进门,修行在个人。只要入了门了,后面的事都好办。选课前,务必注意本章的学习目标和内容。想学更多,注意后边的课程。
©️2020 CSDN 皮肤主题: 大白 设计师: CSDN官方博客 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值