windows10中java调用python脚本


1. windows基础环境

java调用python代码,一定要有java运行环境和python运行环境;

1.1 java安装

1.1.1 下载jdk(版本可自选)

下载链接: https://blog.csdn.net/weixin_42096620/article/details/109840500
在这里插入图片描述

1.1.2 安装jdk

双击下载,下一步就好了,我默认安装到c盘了;

1.1.3 配置java环境变量

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
检查java是否安装成功:
在这里插入图片描述

1.2 python安装

1.2.1 python下载

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1.2.3 windows安装 python

1.双击下载的exe
在这里插入图片描述
2.然后下一步:
3.选择browser d:/python
4.下一步
5.close

1.2.3 配置python环境变量

在上边java的path中新建:
在这里插入图片描述

1.2.4 测试python是否安装成功

cmd输入python
在这里插入图片描述

1.2.5 查看python的第三方库

1.进入到python的Script目录下
2.cmd
3.查看已下载类库命令:
在这里插入图片描述
4.安装类库命令:
pip install numpy

1.2.6 测试python脚本(无传参)

  1. demo1.py文件中输入:
import numpy as np

a = np.arange(12).reshape(3,4)
print(a)
  1. 进入demo1.py文件夹:
  2. cmd进去
  3. 输入
python demo1.py
或者
demo1.py
  1. 结果:
    在这里插入图片描述

1.2.7 测试python脚本(传参)

  1. 创建python脚本demo2.py
import sys
a=sys.argv[1]
b=sys.argv[2]
print(a,b)
  1. cmd执行这个脚本
  2. 结果
    在这里插入图片描述
    注意: 参数间空格隔开

2、windows中java调用python?

2.1传参

2.1.1python脚本代码

import io
import sys
import jieba
#防止乱码
sys.stderr = io.TextIOWrapper(sys.stderr.buffer, encoding='utf-8')
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')
target=sys.argv[1]
def jiexi(target):
    path=r'D:\graphDB\问题模板.txt'


    with open(path,'r',encoding='utf-8') as f :
        questions=f.readlines()
        questions_all = [q.strip().split(':')[-1] for q in questions if q != '\n']     #所有问题


        questions = [jieba.lcut(q.strip().split(':')[-1]) for q in questions if q != '\n']   #所以问题进行分词
        target=set(jieba.lcut(target))       #目标问句分词


        q_min=[]
        questions_target=[]      #目标问句转换后的问句

        for i in questions:
            questions=set(i)
            number=target-questions           #匹配度

            q_min.append(len(number))         #与所有问题匹配度
        min_l=min(q_min)                     #匹配度最高值/列表


        for i in range(len(q_min)):
            if q_min[i]==min_l:
                questions_target.append(questions_all[i])
        return  questions_target


def jieshou(target):
    
    aaa=jiexi(target)
    
    return aaa[-1]

a=jieshou(target)
print(a)

2.1.2 java通过Runtime.getRuntime().exec()调用python代码

package com.你的包.shipatlas;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

/**
 * @author lixy
 */
public class CallPythonQuestion {
    
    
    public static void main(String[] args) throws Exception{
    
    
        try {
    
    
            // 参数1: 命令行的python
            // 参数2: python脚本URL
            // 参数3: python脚本里边接的参数
            String[] args1 = new String[] {
    
     "python", "D:\\guanwei\\graphDB\\question.py", "朝雾级驱逐舰舰长"};
            Process proc = Runtime.getRuntime().exec(args1);// 执行py文件

            BufferedReader in = new BufferedReader(new InputStreamReader(proc.getInputStream(), "utf-8"));
            String line = null;
            while ((line = in.readLine()) != null) {
    
    
                System.out.println(line);
            }
            in.close();
            // 打印0,调用py成功; 打印1,调用py失败
            System.out.println(proc.waitFor());
        } catch (IOException e) {
    
    
            e.printStackTrace();
        } catch (InterruptedException e) {
    
    
            e.printStackTrace();
        }
    }
}

2.1.3 java调用python乱码解决

  1. python
    在这里插入图片描述
  2. java可以不写
    在这里插入图片描述

3、Linux中java调用python脚本(有机会补充)

猜你喜欢

转载自blog.csdn.net/weixin_42096620/article/details/110920727