用python执行java,然后将其提供给数据

时间:2016-09-24 17:59:40

标签: python subprocess

我尝试使用python测试我的Java类,我在“for循环”中使用suproccess

>>> import subprocess
>>> for x in range(1, 6):
...     subprocess.call(["java", "Watermelon"])
... 

所以当西瓜正在执行等待输入时......

public class Watermelon{
    public static void main(String[]args){
    Scanner sc = new Scanner(System.in);

    int w = sc.nextInt();

然后我必须输入“value”并按下ENTER给西瓜获取“值”并继续从python循环并再次输入“value”并且......到最后。

你能帮我在python循环中使用“x”,比如java class的“value”......

感谢您的帮助,请原谅我的英语。

2 个答案:

答案 0 :(得分:0)

您可以使用PyJnius作为Python类访问Java类。

>>> from jnius import autoclass
>>> system = autoclass('java.lang.System')
>>> con = system.console() 
>>> con.readLine()
12
'12'
>>>

使用已编译的西瓜类进行测试

import java.io.Console;

public class Watermelon
{
    public String read()
    {   
        Console con = System.console();
        String line = con.readLine();
        return line;
    }
}

Python代码

>>> from jnius import autoclass
>>> w = autoclass('Watermelon')
>>> wi = w()
>>> line = wi.read()
12
>>> type(line)
<type 'str'>
>>> 

答案 1 :(得分:-2)

你可以很容易地做到这一点

>>> import subprocess
>>> for x in range(1, 6):
...     subprocess.call(["java", "Watermelon "+x])
... 

你只需要附加x来完成字符串。

就像java ProgramName int1 int2 ...

一样

另外, Scanner正在暂停程序,程序等待用户输入。 相反,您可以执行以下操作

int w =Integer.parseInt(args[0]);
相关问题