• java里面嵌套执行python脚本


    方法一:通过RunTime.getRuntime().exec(shellScript)

        //方式1 不带参数
           String classpath = Thread.currentThread().getContextClassLoader().getResource("").getPath();
            String shellScript = null;
            if (System.getProperties().getProperty("os.name").toLowerCase().indexOf("windows") != -1){
                shellScript = String.format("python template.py", classpath.substring(1));
            }else {
                shellScript = String.format("python3 template.py", classpath.substring(1),classpath);
            }
            Runtime rt = Runtime.getRuntime();
            
    
          
    
        //方式2 带参数
    
            String command = "D:\calculator_simple.py"; 
            String num1 = "1"; 
            String num2 = "2"; 
            String[] cmdArr = new String[] {exe, command, num1, num2}; 
            Process process = Runtime.getRuntime().exec(cmdArr); 
            InputStream is = process.getInputStream(); 
            DataInputStream dis = new DataInputStream(is); 
            String str = dis.readLine(); 
            process.waitFor(); 
            System.out.println(str); //此处输出3
    
            #calculator_simple.py脚本
            # coding=utf-8
            from sys import argv
            num1 = argv[1]
            num2 = argv[2]
            sum = int(num1) + int(num2)
            print sum        

    方法2:通过Jython调用,这种方式不太推荐,记得调用selenium的库会报No module found,可是明明引用了,而且java社区不太喜欢这种强耦合的方式调用Python,所以官网也不怎么更新了,在微服务架构大行其道的今天,这种程序间嵌套调用的方式将会逐渐被淘汰

        String python = "D:\simple_python.py";
        PythonInterpreter interp = new PythonInterpreter();
        interp.execfile(python);
    //方式1 不带参数
    String command = "D:\calculator_simple.py"; 
    String num1 = "1";
    String num2 = "2";
    String[] cmdArr = new String[] {exe, command, num1, num2};
    Process process = Runtime.getRuntime().exec(cmdArr);
    InputStream is = process.getInputStream();
    DataInputStream dis = new DataInputStream(is);
    String str = dis.readLine();
    process.waitFor();
    System.out.println(str);
  • 相关阅读:
    Day 03
    Day 02
    Day 01
    re正则表达四
    python学习05之数据可视化
    python学习04之柱形图和热图
    python学习03之线图表
    python的学习02之数据处理
    python的学习01之csv文件处理
    中国大学排名实例
  • 原文地址:https://www.cnblogs.com/feibazhf/p/14337603.html
Copyright © 2020-2023  润新知