在Java中执行python编译脚本(.pyc)

时间:2012-07-31 15:59:04

标签: java python pyc

我有一个python编译脚本(script.pyc,我没有.py文件),它在我的Windows命令提示符下运行良好,我想从我的Java应用程序执行它。 我试着使用runtime()方法:

        Runtime runtime = Runtime.getRuntime();
    runtime.exec(new String[] {"C:\\toto\\tools\\script.pyc" ,"arg","arg2" });

但是我收到了错误:

Exception in thread "main" java.io.IOException: Cannot run program "C:\Nuance\VoCon Hybrid\SDK_v4_3\tools\clctodict.pyc": CreateProcess error=193, %1 n?est pas une application Win32 valid

脚本在我的终端中运行良好(“arg”是一个txt文件,“arg2”是输出名称,脚本完成其工作没有任何问题。)

我也尝试使用getDesktop()启动我的脚本:

        File fie = new File("C:\\toto\\tools\\script.pyc" ,"arg","arg2");
    Desktop.getDesktop().open(fie); 

没有问题,但是我无法添加参数,所以我可以看到终端窗口在几秒钟内打开,然后立即消失。 我也试过使用JPython,也没有成功(也许我们不能在.pyc上使用methode“execfile”????)

2 个答案:

答案 0 :(得分:2)

就像你需要一个运行.class的jvm一样,你需要一个python解释器来运行.pyc。

尝试类似:

runtime.exec(new String[] {"c:\\Python26\\bin\\python.exe", "C:\\toto\\tools\\script.pyc" ,"arg","arg2" });

答案 1 :(得分:2)

您可以执行类似

的操作
Process p = Runtime.getRuntime().exec(new String[]{"python.exe" ... other args)

然后你可以调用p.waitFor()来等待进程的结束,然后调用p.exitValue()来测试程序是否成功退出。

您还可以通过p.getOutputStream()获取输出流,以检索python脚本打印的文本

有关详细信息,请参阅课程文档:http://docs.oracle.com/javase/6/docs/api/java/lang/Process.html