如何从Java执行Python脚本?
我能运行Linux命令状ls
或pwd
从Java没有问题,但不能得到执行的Python脚本。
这是我的代码:
Process p;try{
System.out.println("SEND");
String cmd = "/bash/bin -c echo password| python script.py '" + packet.toString() + "'";
//System.out.println(cmd);
p = Runtime.getRuntime().exec(cmd);
BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream()));
String s = br.readLine();
System.out.println(s);
System.out.println("Sent");
p.waitFor();
p.destroy();
} catch (Exception e) {}
什么都没有发生。它到达了SEND,但之后就停止了…
我正在尝试执行需要root权限的脚本,因为它使用串行端口。另外,我还必须传递带有一些参数的字符串(数据包)。
回答:
您不能Runtime.getRuntime().exec()
像在示例中那样在内部使用PIPE 。PIPE是shell的一部分。
你可以做
- 将命令放入shell脚本并使用
.exec()
或执行该shell脚本 - 您可以执行类似以下操作
String[] cmd = { "/bin/bash",
"-c",
"echo password | python script.py '" + packet.toString() + "'"
};
Runtime.getRuntime().exec(cmd);
以上是 如何从Java执行Python脚本? 的全部内容, 来源链接: utcz.com/qa/431434.html