如何从 Java 执行 Python 脚本(通过命令行)?
- 2024-11-11 08:27:00
- admin 原创
- 21
问题描述:
我可以毫无问题地从 Java 执行 Linux 命令,例如ls
或pwd
,但无法执行 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 权限的脚本,因为它使用串行端口。此外,我必须传递一个带有一些参数(数据包)的字符串。
解决方案 1:
您不能Runtime.getRuntime().exec()
像示例中那样在里面使用 PIPE。PIPE 是 shell 的一部分。
你可以做
将您的命令放入 shell 脚本并使用或执行该 shell
.exec()
脚本您可以做类似以下的事情
String[] cmd = {
"/bin/bash",
"-c",
"echo password | python script.py '" + packet.toString() + "'"
};
Runtime.getRuntime().exec(cmd);
解决方案 2:
@Alper 的答案应该有效。不过,更好的是,根本不要使用 shell 脚本和重定向。您可以使用 (令人困惑的名称) 将密码直接写入进程的标准输入Process.getOutputStream()
。
Process p = Runtime.exec(
new String[]{"python", "script.py", packet.toString()});
BufferedWriter writer = new BufferedWriter(
new OutputStreamWriter(p.getOutputStream()));
writer.write("password");
writer.newLine();
writer.close();
解决方案 3:
尝试嵌入 jython并执行脚本可能会更糟糕。一个简单的示例应该会有所帮助:
ScriptEngine engine = new ScriptEngineManager().getEngineByName("python");
// Using the eval() method on the engine causes a direct
// interpretataion and execution of the code string passed into it
engine.eval("import sys");
engine.eval("print sys");
如果您需要进一步的帮助,请发表评论。这不会产生额外的流程。
解决方案 4:
首先,打开终端并输入“which python3”。您将获得python3的完整路径。例如“/usr/local/bin/python3”
String[] cmd = {"/usr/local/bin/python3", "arg1", "arg2"};
Process p = Runtime.getRuntime().exec(cmd);
p.waitFor();
String line = "", output = "";
StringBuilder sb = new StringBuilder();
BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream()));
while ((line = br.readLine())!= null) {sb = sb.append(line).append("
"); }
output = sb.toString();
System.out.println(output);
相关推荐
热门文章
项目管理软件有哪些?
- 2024年20款好用的项目管理软件推荐,项目管理提效的20个工具和技巧
- 2024年开源项目管理软件有哪些?推荐5款好用的项目管理工具
- 项目管理软件有哪些?推荐7款超好用的项目管理工具
- 项目管理软件哪个最好用?盘点推荐5款好用的项目管理工具
- 项目管理软件有哪些最好用?推荐6款好用的项目管理工具
- 项目管理软件有哪些,盘点推荐国内外超好用的7款项目管理工具
- 2024项目管理软件排行榜(10类常用的项目管理工具全推荐)
- 项目管理软件排行榜:2024年项目经理必备5款开源项目管理软件汇总
- 2024年常用的项目管理软件有哪些?推荐这10款国内外好用的项目管理工具
- 项目管理必备:盘点2024年13款好用的项目管理软件
热门标签
云禅道AD