将Python集成到Java中-我们可以直接调用.py文件吗?

将Python集成到Java中-我们可以直接调用.py文件吗?,java,python,jython,Java,Python,Jython,我想了解Jython。我有一些用Python编写的算法,我想将它们集成到Java中。Jython文档对我来说非常复杂。我所能从中得到的是,我可以通过如下方式嵌入它们,从Java运行单个Python语句: interp = new PythonInterpreter(); interp.exec("import sys"); interp.exec("print sys"); 但我不能像那样嵌入我的巨型算法。我需要运行py脚本。有办法吗?我可以得到一个hello-

我想了解Jython。我有一些用Python编写的算法,我想将它们集成到Java中。Jython文档对我来说非常复杂。我所能从中得到的是,我可以通过如下方式嵌入它们,从Java运行单个Python语句:

interp = new PythonInterpreter();
        interp.exec("import sys");
        interp.exec("print sys");

但我不能像那样嵌入我的巨型算法。我需要运行py脚本。有办法吗?我可以得到一个hello-world示例,其中
print(“hello”)
语句写在py脚本文件中,输出显示在Java控制台上吗?

Jython这是更好的选择

否则,您可以使用命令提示符从java运行python程序,并用java收集输出

例如:

 ProcessBuilder builder = new ProcessBuilder(
                "cmd.exe", "/c", "C:\\Python27\\python.exe C:\\Users\\Bens\\Desktop\\test.py");
        builder.redirectErrorStream(true);
        Process p = builder.start();
        BufferedReader r = new BufferedReader(new InputStreamReader(p.getInputStream()));
        String line;
        while (true) {
            line = r.readLine();
            if (line == null) {
                break;
            }
            System.out.println(line);
        }
    } catch (IOException ex) {
        Logger.getLogger(TCPServer.class.getName()).log(Level.SEVERE, null, ex);
    }

Jython是更好的选择

否则,您可以使用命令提示符从java运行python程序,并用java收集输出

例如:

 ProcessBuilder builder = new ProcessBuilder(
                "cmd.exe", "/c", "C:\\Python27\\python.exe C:\\Users\\Bens\\Desktop\\test.py");
        builder.redirectErrorStream(true);
        Process p = builder.start();
        BufferedReader r = new BufferedReader(new InputStreamReader(p.getInputStream()));
        String line;
        while (true) {
            line = r.readLine();
            if (line == null) {
                break;
            }
            System.out.println(line);
        }
    } catch (IOException ex) {
        Logger.getLogger(TCPServer.class.getName()).log(Level.SEVERE, null, ex);
    }

嘿,你能指导我如何在Linux上做这件事吗?你可以使用String[]commands=newstring[]{“/bin/sh”,“-c”,command};ProcessBuilder=新的ProcessBuilder(命令);如果使用debian,您可以尝试使用“/bin/bash”而不是“/bin/sh”,那么您可以指导我如何在Linux上执行此操作吗?您可以使用String[]commands=new String[]{/bin/sh”,“-c”,command};ProcessBuilder=新的ProcessBuilder(命令);如果使用debian,您可以尝试使用“/bin/bash”而不是“/bin/sh”,那么您不能使用
PythonInterpreter.execfile()
?请参阅。您不能使用
PythonInterpreter.execfile()
?看见