gpt4 book ai didi

java - Python 与 Java

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:55:18 24 4
gpt4 key购买 nike

除了使用 Jython,还有什么方法可以从 Python 调用 Java 程序吗?

这个 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 代码将是相同的。我需要用两列替换第二列......即 Java 返回的值。

请帮忙

最佳答案

您始终可以将 java 程序作为命令行工具来调用 - 程序使用何种语言并不重要。为此,我建议使用 subprocess模块。您甚至可以在不使用文件系统上的任何临时文件的情况下将输入/输出通过管道传输到您的 Python 程序。以下示例运行一个 Java 应用程序并获取其输出:

prog = subprocess.Popen(["/usr/bin/java", "TestClass"], stdout=subprocess.PIPE)
print prog.stdout.read()

另一种选择,尽管涉及更多的是使用 py4j :

Py4J enables Python programs running in a Python interpreter to dynamically access Java objects in a Java Virtual Machine. Methods are called as if the Java objects resided in the Python interpreter and Java collections can be accessed through standard Python collection methods. Py4J also enables Java programs to call back Python objects. Py4J is distributed under the BSD license.

我认为这听起来确实像您正在做的事情..

Py4J 的优点是它是一种更便携的解决方案,使用套接字在 java 和 python 程序之间进行通信——您没有在 python 环境中运行 JVM,您实际上是与运行 py4j 网关的现有 JVM 实例“通信” .

关于java - Python 与 Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13138739/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com