我有一个使用PyAIML用Python编写的简单聊天机器人,我正在运行一个Java语音到文本系统。 现在,我想将Java的输出传递给Python。
这是我到目前为止所尝试的内容:
File file = new File("C:\\Users\\path\\to\\chat_bot\\");
Process process = Runtime.getRuntime().exec("python chat.py", null, file);
OutputStream stdin = process.getOutputStream();
InputStream stderr = process.getErrorStream();
InputStream stdout = process.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(stdout));
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(stdin));
while ((line = reader.readLine()) != null) {
System.out.println("Stdout: " + line);
}
String input = in.nextLine();
input += "\n";
writer.write(input);
writer.flush();
现在,我在Python 2.7中安装了AIML,但出于某种原因,默认设置为Python 3.3 另外,我从Java得到的错误是:
java.io.IOException: The pipe is being closed
我已将Windows注册表更改为默认设置Python 2.7,但这没用。
那么,如何设置Java来运行C:\Python27
文件夹中的python?
我真的不想卸载Python 3.3。
答案 0 :(得分:0)
您应该使用ProcessBuilder(而不是Runtime.exec)。除此之外,你应该使用你想要的python版本的完整路径(例如使用c:\\Python27\\bin\\python
而不仅仅是python
)。