3

我有一个 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 上使用方法“execfile”??????)

4

2 回答 2

2

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

尝试类似:

runtime.exec(new String[] {"c:\\Python26\\bin\\python.exe", "C:\\toto\\tools\\script.pyc" ,"arg","arg2" });
于 2012-07-31T16:23:12.057 回答
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

于 2012-08-01T14:32:48.937 回答