java - 使用 Java 运行 Python 脚本时出错

标签 java python

我基本上是在尝试使用 Java 程序运行 Python 脚本。

这是我的 Java 代码片段:

String cmd = "python /home/k/Desktop/cc.py";        
InputStream is = Runtime.getRuntime().exec(cmd).getInputStream(); 
InputStreamReader isr = new InputStreamReader(is);
BufferedReader buff = new BufferedReader (isr);
String line;
while((line = buff.readLine()) != null)
System.out.println(line);

该代码在运行时打印出我想要的输出。但后来我修改了 cc.py 文件,通过添加额外的行来接受 sys.argv 参数: print sys.argv[1]

现在,当我将 Java String cmd 更改为:

String[] cmd = new String[] {"python /home/k/Desktop/cc.py", "3"};

我收到错误:

Exception in thread "main" java.io.IOException: Cannot run program "python /home/k/Desktop/cc.py": error=2, No such file or directory
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1041)
at java.lang.Runtime.exec(Runtime.java:617)
at java.lang.Runtime.exec(Runtime.java:485)
at test.main(test.java:36)
Caused by: java.io.IOException: error=2, No such file or directory
at java.lang.UNIXProcess.forkAndExec(Native Method)
at java.lang.UNIXProcess.<init>(UNIXProcess.java:135)
at java.lang.ProcessImpl.start(ProcessImpl.java:130)
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1022)
... 3 more

为什么这对我来说不适用于数组字符串?经过一些谷歌搜索后,这对其他人也有效。

最佳答案

尝试改变

String[] cmd = new String[] {"python /home/k/Desktop/cc.py", "3"};

String[] cmd = new String[] {"python", "/home/k/Desktop/cc.py", "3"};

如果您使用 exec(String command),则您使用的第一种形式 ( exec(String[] cmdarray) ) 在内部标记给定的字符串。表单中,您需要传递要执行的程序作为数组的第一个元素,并将参数作为另一个元素,因为在这种情况下不应用标记化。

关于java - 使用 Java 运行 Python 脚本时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19121894/

相关文章:

Java proguard 保留具有 FXML 注释的字段和方法的名称

java - CSS 未反射(reflect)在 Glassfish 4 中的 HTML 文件中

java - Spring 5 中 ExceptionHandlerExceptionResolver 始终返回 200 响应代码

python - 如何在 python 中解码飞镖编码的 readAsBytesSync() 字符串

python - 同模型的django相关key

python - 用 Python 写入 Windows 日志

java - ProgressListener 中的静态变量

java - 如何为所有(多个)ImageView 设置相同的 OnClickListener

Python 3.6.1 - 权限错误 : [Errno 13] Permission denied shown when trying to unzip a file

python - 返回在不同列表中匹配的字符串的函数