java和python程序合并_如何使用python执行java程序,同时考虑输入和输出

将我的

python程序视为input.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,stderr=STDOUT)

input=subprocess.Popen(cmd,stdin=PIPE)

print proc.stdout.read()

我使用的Java文件是Hi.java

import java.util.*;

class Hi

{

public static void main(String args[])

{

Scanner t=new Scanner(System.in);

System.out.println("Enter any string");

String str=t.nextLine();

System.out.println("This is "+str);

int a=5;

System.out.println(a);

}

}

当我调用input.execute_java(Hi.hava)时,输出为“输入字符串”,当我输入字符串时说“Jon”,然后再次输出为“输入字符串这是Jon”,即它提供整个输出两次.由于代码打印proc.stdout.read(),可能是由于python代码输入= subprocess.Popen(cmd,stdin = PIPE)和第二次输出导致的一个输出

我希望它只打印一次.我该怎么办?我希望我的python变量接收java程序的所有输出,并使用该变量我将在屏幕上显示输出.此外,如果有一个java程序的输入,我希望该用户输入将存储在我的python变量中的输入,并使用此变量,我想将输入传递给java程序.我该怎么办?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值