试图从java调用python文件

时间:2015-04-07 06:30:51

标签: java python jython

我正在尝试从java运行python文件。

我试过了

ProcessBuilder pb = new ProcessBuilder("python", "pythonfile.py");
Process p = pb.start();

但那并没有奏效。没有给出错误,但文件没有运行。

我也试过

Runtime.getRuntime().exec("python pythonfile.py");

并得到了同样的东西。没有错误,但文件没有运行。

虽然它不重要,但这是我试图运行的.py文件:

 import winsound
 Freq = 1500 # Set Frequency To 1500 Hertz
 Dur = 500 # Set Duration To 1000 ms == 1 second
 winsound.Beep(Freq,Dur)
 print "this file ran!!!"

没有打印任何内容,也没有听到噪音。由于各种原因,我无法使用Jython,所以请关注这个问题。谢谢!

解决方案:正如Rahul Jha所指出的那样,我的问题是我的python文件位于不正确的文件夹中。谢谢!!

2 个答案:

答案 0 :(得分:0)

我不知道为什么声音不起作用,但是你没有看到任何打印输出,因为你没有在任何地方指导进程的输出流。

尝试拨打inheritIO。一个简单的例子:

new ProcessBuilder("echo", "Hello").inheritIO().start()

答案 1 :(得分:0)

使用BufferedReader显示输出。

import java.io.*;
class Test {
public static void main(String args[]) {
    try {
        Process p = Runtime.getRuntime().exec(
                "python Test.py ");
        BufferedReader in = new BufferedReader(new InputStreamReader(
                p.getInputStream()));
        System.out.println(in.readLine());
    } catch (Exception e) {
    }
}

}

我的python文件是Test.py

print "Hello World Python.";