Java 如何在Python中从可执行jar捕获信息?

Java 如何在Python中从可执行jar捕获信息?,java,python,Java,Python,我有一个可执行的jar,它将一些信息打印到屏幕上。我想从输出中获取一个特定的数字,即成本。例如,有一行“Cost=10”,我希望在运行jar文件N次时有一个成本列表。我想用python脚本自动化这个过程,但由于我是python新手,我不知道用python脚本从标准输出中提取数据的最佳方法。完成这项任务的最佳方式是什么 def wrapper(*args): process = Popen(list(args), stdout=subprocess.PIPE) process.co

我有一个可执行的jar,它将一些信息打印到屏幕上。我想从输出中获取一个特定的数字,即成本。例如,有一行“Cost=10”,我希望在运行jar文件N次时有一个成本列表。我想用python脚本自动化这个过程,但由于我是python新手,我不知道用python脚本从标准输出中提取数据的最佳方法。完成这项任务的最佳方式是什么

def wrapper(*args):
    process = Popen(list(args), stdout=subprocess.PIPE)
    process.communicate()
    return process

linkFileList = [ join(linkDir,f) for f in listdir(linkDir) if isfile(join(linkDir,f)) ]
nodeFileList = [ join(nodeDir,f) for f in listdir(nodeDir) if isfile(join(nodeDir,f)) ]
pairFileList = [ join(pairDir,f) for f in listdir(pairDir) if isfile(join(pairDir,f)) ]
size = len(linkFileList)
for count in range(0, size):
    x = wrapper('java', '-jar', 'C:\\Users\\fatma\\Documents\\workspace\\HeuristicRunnable.jar', nodeFileList[count], linkFileList[count], pairFileList[count])

你很接近。您要改为执行此操作:

def wrapper(*args):
    process = Popen(list(args), stdout=subprocess.PIPE, stderr=subprocess.PIPE)
    stdout, stderr = process.communicate()
    return stdout, stderr
变量
stdout
stderr
将是与来自jar的stdout和stderr的输出相对应的简单字符串。我真的认为,一旦使用了
过程
变量,就不能对它做任何事情,因此返回它真的没有多大意义


(我还包括了获取stderr所需的代码,以防它也被证明是有用的)

关于堆栈溢出,有几个问题可以认为是重复的,请检查这些问题:或者感谢您的回答,我如何从函数返回的stdout中提取信息?