python预测疾病 java输入参数调用_从Python调用java程序(带参数)并将结果返回给Python...

我必须从Python执行一个java文件(传递一个参数),并在执行后将结果返回给调用它的脚本。我写了一个小的java测试程序,它接受一个参数并打印出一些东西到stdout。这是java程序

import java.util.*;

class TestX

{

public static void main(String args[])

{

String someString = "Your input";

System.out.println(someString + " " + args[0]);

int resultOfSomething = 45;

String someOutput = "Program's output is " + resultOfSomething;

System.out.println(someOutput);

}

}

这是调用java程序的Python脚本

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)

stdout,stderr = proc.communicate(input='SomeInputstring')

print ('This was "' + stdout + '"')

compile_java('TestX.java')

execute_java('TestX.java')

我应该提到我不熟悉java。我通过这个命令javac TestX.java编译了这个小java程序。这创建了一个类文件。当我使用java TestX SomeTestString从命令行运行java程序时,微小的java程序按预期工作并将一些文本输出到控制台。

现在问题;当我使用上面的代码从Python运行相同的java程序时 - 1)有一个错误

This was "Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0

at TestX.main(TestX.java:7)

"

当我在Python程序中注释掉行print ('This was "' + stdout + '"')时,Python程序运行并且似乎执行java程序,但没有任何内容返回到控制台。我在这里缺少一些非常简单的东西,或者这只是我犯的一个愚蠢的错误。有什么指针吗?感谢。

我尝试了几种不同的方法来输出结果,比如使用printf,甚至使用这个类StdOut。所有这些似乎都表现得一样。

如果我简单地解释一下,那就是这个;

我的Python脚本应该使用单个参数调用java程序。

java程序接受输入,执行某些函数并返回一个我应该能够从调用它的Python程序中读取的结果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值