Ejecutando un archivo .py desde Java

Estoy tratando de ejecutar un archivo .py desde el código java. Muevo el archivo .py en el directorio predeterminado de mi proyecto Java y lo llamo usando el siguiente código:

String cmd = "python/"; String py = "file"; String run = "python " +cmd+ py + ".py"; System.out.println(run); //Runtime.getRuntime().exec(run); Process p = Runtime.getRuntime().exec("python file.py"); 

Ya sea usando la ejecución variable, o la ruta completa o “python file.py” mi código se está ejecutando, mostrando el tiempo total de generación de mensajes 0 segundos sin ejecutar el archivo.py. ¿Cuál es mi problema aquí?

Puedes usar así también:

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

o

 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); 

Ejecutar script Python desde Java

Creo que podemos usar 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(); 
 String command = "cmd /c python "; 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(); 

Puedes ejecutar el script de python

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

Para obtener el PYTHON_ABSOLUTE_PATH simplemente escriba

 which python2.7 

en la terminal