zoukankan      html  css  js  c++  java
  • java调用含第三方库的py文件

    这是一个心酸的历程。

    py文件如下:

    这里调用出现的问题主要是第三方包的问题,因为你的py文件里可能含有很多三方库文件,jython的jar包里可能不含有这个,所以这时需要你找到你已有三方库文件的exe,怎么找呢,去你的pycharm里找,不然java会调用计算机默认的python去做,而你可能只是把三方库文件下载到了某一个程序里,如果我这么说你不懂那就去pycharm里找:

    java源码:

    import org.python.core.Py;
    import org.python.core.PySystemState;
    import org.python.util.PythonInterpreter;
    
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    
    public class py {
        public static void main(String[] args) throws IOException {
            try{  
                System.out.println("start");  
                Process pr = Runtime.getRuntime().exec("C:\Users\神奇的刘dd\PycharmProjects\untitled\venv\Scripts\python.exe C:\Users\神奇的刘dd\PycharmProjects\untitled\毕设\TestMysql.py");              
                System.out.println("123"); 
                BufferedReader in = new BufferedReader(new  
                        InputStreamReader(pr.getInputStream()));  
                String line;  
                while ((line = in.readLine()) != null) {  
                    System.out.println(line);  
                }           
                in.close();  
                pr.waitFor();    
                System.out.println("end"); 
        } catch (Exception e){  
                    e.printStackTrace();  
                }  
            
        }
    }

    插入数据库也可以。亲测成功!

     接受的python程序的返回值是乱码怎么办?

    import org.python.core.Py;
    import org.python.core.PySystemState;
    import org.python.util.PythonInterpreter;
    
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    
    public class py {
        public static void main(String[] args) throws IOException {
            try{  
                System.out.println("start");  
                Process pr = Runtime.getRuntime().exec("C:\Users\神奇的刘dd\PycharmProjects\untitled\venv\Scripts\python.exe C:\Users\神奇的刘dd\PycharmProjects\untitled\毕设\QQNews.py");              
                System.out.println("123"); 
               BufferedReader in = new BufferedReader(new  
                        InputStreamReader(pr.getInputStream(),"GBK"));  
                String line;  
                while ((line = in.readLine()) != null) {  
                    //String res=new String(line.getBytes("iso8859-1"), "utf-8");
                    System.out.println(line);  
                }           
                in.close();  
                pr.waitFor();    
                System.out.println("end"); 
        } catch (Exception e){  
                    e.printStackTrace();  
                }  
            
        }
    }

    这样设置字符集为GBK即可。

  • 相关阅读:
    MyBatis之动态SQL
    MyBatis(十一) 嵌套结果集的方式,使用collection标签定义关联的集合类型的属性封装规则
    MyBatis(10)使用association进行分步查询
    MyBatis(九) 使用association定义单个对象的封装规则
    MyBatis(八)联合查询 级联属性封装结果集
    MyBatis(七) 自定义映射结果ResultMap
    基于.NET架构的树形动态报表设计与应用
    Web在线报表设计器使用指南
    计量检测行业业务系统如何实现信息化?
    【ActiveReports 大数据分析报告】2019国庆旅游出行趋势预测
  • 原文地址:https://www.cnblogs.com/mm20/p/11594724.html
Copyright © 2011-2022 走看看