Running a .py file from Java

前端 未结 5 1553
春和景丽
春和景丽 2020-11-28 09:15

I am trying to execute a .py file from java code. I move the .py file in the default dir of my java project and I call it using the following code:

    Strin         


        
相关标签:
5条回答
  • 2020-11-28 09:18

    You can run the python script

    Process p = Runtime.getRuntime().exec(PYTHON_ABSOLUTE_PATH, script_path)
    

    To get the PYTHON_ABSOLUTE_PATH just type

    which python2.7
    

    in terminal

    0 讨论(0)
  • 2020-11-28 09:24

    Though the OP has got the answer, I'm posting my solution which might help someone else like me..

            File file = new File(("C:/.../file.py"));
    
            List<String> list = new ArrayList<String>();
            list.add("python.exe");
            String absPath = file.getAbsolutePath();
    
            System.out.println("absPath>>"+absPath);
    
            list.add(absPath);
            ProcessBuilder pb = new ProcessBuilder(list);
            Process process = pb.start();
    
            InputStream inputStream = process.getInputStream();
            byte[] b = new byte[1024 * 1024];// {(byte) 1024};
            while (inputStream.read(b) > 0) {
                System.out.println("b.length>>"+new String(b));
            }
    
            process.waitFor();
            System.out.println("exitValue()>>"+process.exitValue());    //Should return 0 on successful execution
    
    0 讨论(0)
  • 2020-11-28 09:26

    I believe we can use ProcessBuilder

    Runtime.getRuntime().exec("python "+cmd + py + ".py");
    .....
    //since exec has its own process we can use that
    ProcessBuilder builder = new ProcessBuilder("python", py + ".py");
    builder.directory(new File(cmd));
    builder.redirectError();
    ....
    Process newProcess = builder.start();
    
    0 讨论(0)
  • 2020-11-28 09:37

    You can use like this also:

    String command = "python /c start python path\to\script\script.py";
    Process p = Runtime.getRuntime().exec(command + param );
    

    or

    String prg = "import sys";
    BufferedWriter out = new BufferedWriter(new FileWriter("path/a.py"));
    out.write(prg);
    out.close();
    Process p = Runtime.getRuntime().exec("python path/a.py");
    BufferedReader in = new BufferedReader(new InputStreamReader(p.getInputStream()));
    String ret = in.readLine();
    System.out.println("value is : "+ret);
    

    Run Python script from Java

    0 讨论(0)
  • 2020-11-28 09:43
    String command = "cmd /c python <command to execute or script to run>";
        Process p = Runtime.getRuntime().exec(command);
        p.waitFor();
        BufferedReader bri = new BufferedReader(new InputStreamReader(p.getInputStream()));
        BufferedReader bre = new BufferedReader(new InputStreamReader(p.getErrorStream()));
              String line;
            while ((line = bri.readLine()) != null) {
                System.out.println(line);
              }
              bri.close();
              while ((line = bre.readLine()) != null) {
                System.out.println(line);
              }
              bre.close();
              p.waitFor();
              System.out.println("Done.");
    
        p.destroy();
    
    0 讨论(0)
提交回复
热议问题