Python与java
有没有办法从Python中调用Java程序,而不是使用Jython
这个Java程序包含一些函数,我需要给Java代码提供一个输入文件,它返回两个值,我将在Python中使用这两个值。因此Python程序将一个文件名传递给Java代码,Java代码将为该文件中的每一行返回两个值
例如,我有一个包含如下数据的文件:
22 16050408 2 2184 T:0.938645 C:0.0613553
22 16050612 2 2184 C:0.915751 G:0.0842491
22 16050678 2 2184 C:0.94826 T:0.0517399
22 16050984 2 2184 C:0.997711 G:0.00228938
22 16051107 2 2184 C:0.94185 A:0.0581502
我需要给Java程序一个文件,它将为该文件的每一行返回两个值。因此,在包含上述数据的文件中,输入到java代码的行数将是相同的。我需要用两列替换第二列。。i、 e.Java返回的值
请帮忙
# 1 楼答案
您可以随时将java程序称为命令行工具——这样一来,该程序使用何种语言就无关紧要了。为此,我建议使用subprocess模块。甚至可以通过管道将输入/输出传输到python程序,而无需使用文件系统上的任何临时文件。以下示例运行java应用程序并获取其输出:
另一个选项,尽管涉及更多,将使用py4j:
我觉得这听起来像是你在做的事情
Py4J的优点是,它是一个更具可移植性的解决方案,使用套接字在java和python程序之间进行通信——您不是在python环境中运行JVM,而是与运行Py4J网关的现有JVM实例进行“通信”
# 2 楼答案
你可以试试JPype
以下是文档中关于用法的引用:
这将启动一个专用的JVM,您可以在其中运行Java代码,从Python透明地调用它
虽然在你的例子中,我相信你真的可以把你的例程作为一个子进程来运行,如果你将来需要的话,还可以很容易地从Java切换到其他任何东西