Python 脚本未在 Java 中输出
Python script not outputting in Java
谁能解释一下为什么我没有输出? java 代码在 python 脚本中输出错误就好了,但当 Python 代码成功时,returns 的 DataFrame 却没有。我在 Python 3.4 环境中部署了一个 python 脚本,看起来像这样通过 Java:
调用
d = {'one' : pd.Series([1., 2., 3.], index=['a', 'b', 'c']),
'two' : pd.Series([1., 2., 3., 4.], index=['a', 'b', 'c', 'd'])}
df = pd.DataFrame(d)
df
我的 Java 代码调用 python:
private static String executePythonCorrelations() {
String dir=System.getProperty("user.home")+"/insights/";
List<String> commands = new ArrayList<>();
commands.add("python3");
commands.add(dir+"sentiment_corr_conn.py");
//commands.add(""+_categoryId);
String ret="";
try {
ProcessBuilder pb = new ProcessBuilder().command(commands);
final Process p = pb.start();
BufferedReader output = new BufferedReader(new InputStreamReader(p.getInputStream()));
BufferedReader error = new BufferedReader(new InputStreamReader(p.getErrorStream()));
String line="";
while ((line = output.readLine()) != null) {
ret+=line+"<br/>";
}
while ((line = error.readLine()) != null) {
ret+="ERROR: "+line+"<br/>";
}
} catch (IOException e) {
return("EXCEPTION: "+e.getMessage()+"<br/>");
}
return(ret);
}
我相信你最后需要 print(df)
。 Python 的交互模式显示表达式的值,但脚本模式(即您从 Java 调用它时使用的模式)不会。在你给定的代码中,Python 的最后一行计算 df
,但是你没有给它一个命令(动词)告诉 Python run-time 系统做什么与价值,所以它死坐在数据堆栈的顶部。
谁能解释一下为什么我没有输出? java 代码在 python 脚本中输出错误就好了,但当 Python 代码成功时,returns 的 DataFrame 却没有。我在 Python 3.4 环境中部署了一个 python 脚本,看起来像这样通过 Java:
调用d = {'one' : pd.Series([1., 2., 3.], index=['a', 'b', 'c']),
'two' : pd.Series([1., 2., 3., 4.], index=['a', 'b', 'c', 'd'])}
df = pd.DataFrame(d)
df
我的 Java 代码调用 python:
private static String executePythonCorrelations() {
String dir=System.getProperty("user.home")+"/insights/";
List<String> commands = new ArrayList<>();
commands.add("python3");
commands.add(dir+"sentiment_corr_conn.py");
//commands.add(""+_categoryId);
String ret="";
try {
ProcessBuilder pb = new ProcessBuilder().command(commands);
final Process p = pb.start();
BufferedReader output = new BufferedReader(new InputStreamReader(p.getInputStream()));
BufferedReader error = new BufferedReader(new InputStreamReader(p.getErrorStream()));
String line="";
while ((line = output.readLine()) != null) {
ret+=line+"<br/>";
}
while ((line = error.readLine()) != null) {
ret+="ERROR: "+line+"<br/>";
}
} catch (IOException e) {
return("EXCEPTION: "+e.getMessage()+"<br/>");
}
return(ret);
}
我相信你最后需要 print(df)
。 Python 的交互模式显示表达式的值,但脚本模式(即您从 Java 调用它时使用的模式)不会。在你给定的代码中,Python 的最后一行计算 df
,但是你没有给它一个命令(动词)告诉 Python run-time 系统做什么与价值,所以它死坐在数据堆栈的顶部。