Run Python script from Java

China☆狼群 提交于 2019-12-24 14:56:46

问题


I am trying to run .py script in Java, but when I run the java code it doesn't show any output. What I am doing wrong? I tried with:

ArrayList<String> command = new ArrayList<String>();
    //xterm will be launched, if platform is Linux.
    command.add("xterm");
    command.add("-c");
    command.add("python");
    command.add("/home/clef/Escritorio/use_archive.py");
    command.add("/home/clef/classification/STOP_WORDS.tar.gz");
    command.add("/home/clef/Escritorio/Prueba_linea/000006/6.jpg");
    command.add(" > ~/Escritorio/mike.txt");
    //command.add("--revert");    // switch to revert the patch

    ProcessBuilder pb = new ProcessBuilder(command);

    Process p = null;

    if (pb != null) {

        try {
            p = pb.start();
        } catch (IOException e) {
            e.printStackTrace();
        }
        if (p != null) {
            try {
                p.waitFor();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
    BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream()));

    String line = "";
    ArrayList<String> allOut = new ArrayList<>();
    System.out.println("salida");
    try
    {
        System.out.println("SALIDA-----------:");
        while ((line = reader.readLine())!= null)
        {
            System.out.println(line);
            allOut.add(line);
        }
    } catch (IOException ex)
    {
        //allOut = "0";
        //Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
        //System.out.println("erro3");        }
        System.out.println("error");
    }

The script is from NVIDIA DIGITS framewrok, but I can't run any python script from Java. If I run the .py script in terminal I get output:

Unknown file: solver.prototxt
    Unknown file: train_val.prototxt
    Processed 1/1 images in 0.076470 seconds ...
    -------- Prediction for /home/clef/Escritorio/Prueba_linea/000006/6.jpg --------
     51.4607% - "0"
      7.7899% - "1"
      5.7782% - "2"
      5.6086% - "3"
      5.2513% - "4"

    Script took 0.523756 seconds.

回答1:


Try this:

Process p = Runtime.getRuntime().exec("python yourapp.py");

Exec runs system commands, if you have python installed, this will run the python file like you would in the command terminal of your operating system.



来源:https://stackoverflow.com/questions/36660460/run-python-script-from-java

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!