-3
这是我的Python代码:如何调用Python函数在Java中
class myPythonClass:
def table(nb):
i = 0
while i < 10:
print(i + 1, "*", nb, "=", (i + 1) * nb)
i += 1
我需要知道如何使用PythonInterpreter调用它。
这是我的Python代码:如何调用Python函数在Java中
class myPythonClass:
def table(nb):
i = 0
while i < 10:
print(i + 1, "*", nb, "=", (i + 1) * nb)
i += 1
我需要知道如何使用PythonInterpreter调用它。
在Java中使用ProcessBuilder
来创建子进程并捕获其标准输出。这里有一个例子:
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
class CallPython {
public static void main(String[] args) throws IOException, InterruptedException {
ProcessBuilder pb = new ProcessBuilder("python", "/path/to/your/script.py", "10");
Process p = pb.start();
char[] readBuffer = new char[1000];
InputStreamReader isr = new InputStreamReader(p.getInputStream());
BufferedReader br = new BufferedReader(isr);
while (true) {
int n = br.read(readBuffer);
if (n <= 0)
break;
System.out.print(new String(readBuffer, 0, n));
}
}
}
你的Python脚本也需要修改,以便它可以调用的函数,这实际上应该是一个静态方法,类的方法,或者仅仅是一个独立的功能。该脚本还需要nb
的值,以便它可以传递给该函数 - 对此使用sys.argv
。所以例如作为一种静态方法:
import sys
class myPythonClass:
@staticmethod
def table(nb):
i = 0
while i < 10:
print(i + 1, "*", nb, "=", (i + 1) * nb)
i += 1
if __name__ == '__main__':
myPythonClass.table(int(sys.argv[1]))
查看jython – syntonym
只需搜索“java systemcall”;并认真:我猜上面的python代码只是打印出一些字符。你为什么要为此调用一个python解释器?什么阻止你将这几行转换成java代码? – GhostCat
请查看http://stackoverflow.com/help/how-to-ask。你的“问题”不清楚。你到目前为止尝试了什么? –