• 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即可。

  • 相关阅读:
    页面渲染速度增加的方法和建议
    五(六)、Package & import
    五(五)、构造器 & JavaBean &this
    五(四)、封装性
    五(三)、方法
    五(二)、匿名对象
    五(一)、类&对象概述
    六、java 异常处理
    四、java 数组
    三、java 基础提炼
  • 原文地址:https://www.cnblogs.com/mm20/p/11594724.html
Copyright © 2020-2023  润新知