如何运行从Java程序中获取命令行参数的Python程序

时间:2014-03-19 02:16:54

标签: java

我知道要从Java程序中运行另一个Java程序,你可以使用这样的东西:

Runtime.getRuntime().exec("/**A command goes here*/")

但是我如何运行一个接受命令行参数的Python程序? 更具体地说,我的Java程序将文件作为命令行参数。然后我将此文件传递给Python程序,然后在同一目录中生成另一个文件。我将能够访问这个新文件。

我可以直接致电:

Runtime.getRuntime().exec("python /**directory_of_the_python_program arguments_for_program*/");

我对内心的内容感到有点困惑" exec(...)"。

1 个答案:

答案 0 :(得分:2)

尝试捕获标准输出,这样您就可以在python中使用print输出到此流:

try {  
    Process p = Runtime.getRuntime().exec("python yourProgram.py thearg1 thearg2");  
    p.waitFor();
    InputStream stderr = proc.getOutputStream();
    InputStreamReader in = new InputStreamReader(stdout);
    BufferedReader reader = new BufferedReader(in);
    String line = null;
    while ((line = reader.readLine()) != null) {
        System.out.println("Python says: " + line);
    }
    int exitVal = proc.waitFor();
} catch (Exception e) {  
    e.printStackTrace();  
}

在你的python程序中,要输出到Java程序,请使用print:

print 'Hi!'

要查看Java程序发送给您的内容,您可以使用sys.argv

print 'The Java program sent me: ', str(sys.argv)

注意:我不是python专家,并没有做太多。如果我的语法错误,请告诉我。