我有一个Java程序来调用python脚本。我用过exec方法。请在下面找到代码段:
Python程序(从维基百科收集一部分文本),当单独运行时,会给我正确的输出。从Java调用时,我没有从python程序获得完整的输出。
我使用ready()方法检查了BufferedReader对象的状态(如here所述,并且代码进入无限循环。
我认为其他人也遇到过类似的问题 - https://stackoverflow.com/a/20661352/3409074
任何人都可以帮助我吗?
public String enhanceData(String name,String entity) {
String s = null;
StringBuffer output = new StringBuffer();
try{
String command="python C://enhancer.py "+name+" "+entity;
Process p = Runtime.getRuntime().exec(command);
BufferedReader stdError=new BufferedReader(new InputStreamReader(p.getErrorStream()));
BufferedReader stdInput = new BufferedReader(new InputStreamReader(p.getInputStream()));
while ((s = stdInput.readLine()) != null) {
System.out.println(s);
output.append(s);
}
答案 0 :(得分:1)
while循环条件实际上已经读取了一行,所以你在循环中每次都读取它。
while ((s = stdInput.readLine()) != null) {
//s=stdInput.readLine(); <- don't need this
System.out.println(s);
output.append(s);
}
/尼克