加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

如何从Java执行Python脚本?

发布时间:2020-12-14 16:17:20 所属栏目:Java 来源:网络整理
导读:我可以从 Java执行像ls或pwd这样的 Linux命令,但是不能执行 Python脚本. 这是我的代码: Process p;try{ System.out.println("SEND"); String cmd = "/bash/bin -c echo password| python script.py '" + packet.toString() + "'"; //System.out.println(cmd
我可以从 Java执行像ls或pwd这样的 Linux命令,但是不能执行 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脚本中,然后使用.exec()或
>你可以做类似以下的事情

String[] cmd = {
        "/bin/bash","-c","echo password | python script.py '" + packet.toString() + "'"
    };
Runtime.getRuntime().exec(cmd);

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读