问题是:我有一个Python脚本来生成Shell输出。输出如下:
Result: good.
[123 SPEED] [456 GOOD] [789 BAD]
最后一行更新自身并成为结果:良好或结果:坏线。最后一行再次更新自身并删除前一行。我找到了一种在python脚本中禁用这种行为的方法,但是最好只对shell输出的最后一行进行regex,而不修改python脚本。在
现在,如果让我在输出上运行这个Java代码,它不会显示想要的结果(如果有的话)。在
计时器像我预期的那样运行前3次,然后停止1分钟,然后输出50行regexed输出,甚至是错误的输出。在
所需的结果是将第一个括号、第二个括号和第三个括号输出到不同的guiswing标签中,然后从pythonshell输出中每隔n秒更新一次这些标签。在
try {
p = Runtime.getRuntime().exec("myScript.py -Switches");
pReg = Pattern.compile("\\[(.*?)\\]");
ScheduledExecutorService exec = Executors.newSingleThreadScheduledExecutor();
exec.scheduleAtFixedRate(new Runnable() {
@Override
public void run() {
try {
BufferedReader input =
new BufferedReader(new InputStreamReader(p.getInputStream()));
if ((line = input.readLine()) != null) {
// regex
Matcher m = pReg.matcher(line);
int h = 0;
while(m.find()) {
myHashArray[h] = m.group(1);
h++;
Sytem.out.println(m.group(1));
}
}
}
catch (IOException e1) {
System.err.println(e1);
System.exit(1);
}
}
}, 0, 500, TimeUnit.MILLISECONDS);
}
catch (IOException ea) {
System.exit(0);
}
尝试不使用BufferedReader直接使用InputStreamReader
或者让python进程在每个括号内的项之间输出新行
BufferedStreamReader正在等待缓冲区填充或等待新行,然后将任何内容返回给Java进程
相关问题 更多 >
编程相关推荐