java执行python文件,py里有需要.h5文件
做课程设计,需要把后台部署到服务器上。由于后台需要的模型是python写的,所以在Java里调用.py文件。博客上有很多人写了相关内容,但是由于自己踩了很多坑,于是记录一下。
一开始执行总是报错。原因是 .py里有个.h5文件 ,java的工作环境找不到它。所以把文件放在工作环境下就可以了。如果不知道放在哪里,可以在.py先生成一个文件(参看下面给出的博客),然后在所写的Java项目里找生成的文件。
可以参看下面的博客:
链接:https://blog.csdn.net/qq_42826337/article/details/88839562
Java代码:
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.LineNumberReader; import java.util.ArrayList; public class test { public static void main(String[] args) { String[] arguments = new String[] {"python", "D:\\pycharm_project\\fff\\1.py", "D:\\1.jpg"};//.py需要的参数 //相当于在cmd执行 “python D:\\pycharm_project\\fff\\1.py D:\\1.jpg” try { Process process = Runtime.getRuntime().exec(arguments); //核心部分 BufferedReader in = new BufferedReader(new InputStreamReader(process.getInputStream())); String line = null; while ((line = in.readLine()) != null) { System.out.println(line); } int re = process.waitFor(); System.out.println(re);//输出0代表执行正确,输出1,2..代表错误 while ((line = in.readLine()) != null) { System.out.println(line); } in.close(); } catch (Exception e) { e.printStackTrace(); } } }
import requests import sys import os import numpy as np import h5py import numpy as np from numpy import linalg as LA def prediction(pic_dir): #pic_dir 代表图片路径 # 这里填写模型的路径 h5f = h5py.File('testCNN.h5', 'r') # 我需要文件 prediction(sys.argv[1])