zoukankan      html  css  js  c++  java
  • java中怎么调用python 脚本

    调用方法:

    import java.io.BufferedReader;
    import java.io.InputStreamReader;
    
    public class PythonInvoke {
        public static void invokePy(String[] args) {
    
            try {
                Process process = Runtime.getRuntime().exec(args);
                //防止Python输出中文时乱码
                BufferedReader in = new BufferedReader(new InputStreamReader(process.getInputStream(),"GBK"));
                String line = null;
                while ((line = in.readLine()) != null) {
                    System.out.println(line);
                }
                in.close();
                //java代码中的process.waitFor()返回值为0表示我们调用python脚本成功,
                //返回值为1表示调用python脚本失败,这和我们通常意义上见到的0与1定义正好相反
                int re = process.waitFor();
                System.out.println(re);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }

    测试 Test():

    import com.cargosmart.alarm.utils.PythonInvoke;
    
    public class Test {
    
        public static void main(String[] args) {
            String []para  = new String[] {"python", "D://hello.py"};
            PythonInvoke.invokePy(para);
    
            System.out.println("-----有参------");
            String[] arguments = new String[] {"python", "D://hello1.py","lei","23"};
            PythonInvoke.invokePy(arguments);
         
        }
    
    }

    python文件

      hello.py

    def hello():
        print('Hello,Python')
     
    if __name__ == '__main__':
        hello()

     hello1.py

    import sys
     
    def hello(name,age):
        print('name:'+name)
        print('age:'+age)
     
    if __name__ == '__main__':
        hello(sys.argv[1], sys.argv[2])

    控制台结果:

    Hello,Python
    0
    -----有参------
    name:lei
    age:23
    0
  • 相关阅读:
    PAT 1035. 插入与归并(25)
    PAT 1034. 有理数四则运算(20)
    PAT 1033. 旧键盘打字(20)
    PAT 1032. 挖掘机技术哪家强(20)
    PAT 1031. 查验身份证(15)
    PAT 1030. 完美数列(25)
    PAT 1029. 旧键盘(20)
    PAT 1028. 人口普查(20)
    PAT 1027. 打印沙漏(20)
    PAT 1026. 程序运行时间(15)
  • 原文地址:https://www.cnblogs.com/JonaLin/p/12091259.html
Copyright © 2011-2022 走看看