从Python与Java程序通信

问题描述 投票:0回答:1

我的Python程序是“check.py”

import os.path,subprocess
from subprocess import STDOUT,PIPE

def compile_java(java_file):
    subprocess.check_call(['javac', java_file])

def execute_java(java_file):
    java_class,ext = os.path.splitext(java_file)
    cmd = ['java', java_class]
    proc = subprocess.Popen(cmd,stdout=PIPE,stdin-PIPE,stderr=STDOUT)
    stdout,stderr = proc.communicate("viraj")
    print stdout

我的Java程序是“Test.java”

import java.util.*;
class Test
{
    public static void main(String args[])
    {
        System.out.println("Tested Successfully");
        Scanner t=new Scanner(System.in);
        System.out.println("Enter the string");
        String str=t.nextLine();
            System.out.println("Hello "+str);
       }
}

在这里,在

check.py
中,我将参数
viraj
传递为
proc.communicate("viraj")
,因此我的输出是

测试成功
输入字符串
你好维拉吉

但是,我不想传递参数。相反,我希望输出为

测试成功
输入字符串

然后在我输入字符串

viraj
后,它应该打印为
Hello viraj
我该怎么做?

python java subprocess pipe
1个回答
2
投票

要与 java 程序交互,只需调用不带参数的

communicate()

def execute_java(java_file):
    java_class,ext = os.path.splitext(java_file)
    cmd = ['java', java_class]
    proc = subprocess.Popen(cmd)
    proc.communicate()
© www.soinside.com 2019 - 2024. All rights reserved.