我的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
但是,我不想传递参数。相反,我希望输出为
成功测试了 输入字符串
然后在我输入字符串viraj
后,它应打印为Hello viraj
我怎么能这样做?
答案 0 :(得分: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()