Artigo Diretório
1. Ambiente básico do Windows
Java chama o código python, deve haver um ambiente operacional java e um ambiente operacional python;
1.1 instalação java
1.1.1 Baixar jdk (a versão pode ser selecionada)
Link para download: https://blog.csdn.net/weixin_42096620/article/details/109840500
1.1.2 Instale o jdk
Clique duas vezes para fazer o download, a próxima etapa está correta, eu instalei na unidade c por padrão;
1.1.3 Configurar variáveis de ambiente java
Verifique se o java foi instalado com sucesso:
1.2 instalação do python
1.2.1 download do python
1.2.3 windows install python
1. Clique duas vezes no exe baixado
2. Em seguida, a próxima etapa:
3. Selecione o navegador d: / python
4. Próxima etapa
5.close
1.2.3 Configurar variáveis de ambiente Python
Crie um novo caminho no caminho java acima:
1.2.4 Teste se o python foi instalado com sucesso
cmd input python
1.2.5 Ver bibliotecas de terceiros do Python
1. Insira o diretório Python Script
2.cmd
3. Visualize o comando da biblioteca de classes baixado:
4. Instale o comando da biblioteca de classes:
pip install numpy
1.2.6 Testar script python (sem parâmetros)
- Entre no arquivo demo1.py:
import numpy as np
a = np.arange(12).reshape(3,4)
print(a)
- Entre na pasta demo1.py:
- cmd em
- entrar
python demo1.py
或者
demo1.py
- resultado:
1.2.7 Teste o script python (passando parâmetros)
- Crie o script python demo2.py
import sys
a=sys.argv[1]
b=sys.argv[2]
print(a,b)
- cmd executa este script
- Nota do resultado
: os parâmetros são separados por espaços
2. Java chama python no windows?
2.1 Passando parâmetros
2.1.1 código de script dopython
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 chama o código python por meio de Runtime.getRuntime (). Exec ()
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 chama solução truncada de python
- Pitão
- java não pode escrever