当前位置: 首页 > news >正文

Java:Java程序通过执行系统命令调用Python脚本

本文实现功能:Java程序调用Python脚本

Python脚本

import sysdef add(x, y):return x + yif __name__ == "__main__":print(add(int(sys.argv[1]), int(sys.argv[2])))

直接执行

$ python math.py 1 2
3

Java程序调用Python脚本

package io.github.mouday.utils;import java.io.*;/*** 执行系统命令*/
public final class ShellUtil {private ShellUtil() {}/*** 操作系统名称** @return Mac OS X*/public static String getOsName() {return System.getProperty("os.name");}/*** 判断是否为windows操作系统** @return*/public static Boolean isWindows() {return ShellUtil.getOsName().toLowerCase().contains("win");}/*** 根据系统返回对应平台执行命令* @param command* @return*/public static ProcessBuilder getProcessBuilder(String command) {if (ShellUtil.isWindows()) {return new ProcessBuilder("cmd", "/c", command);} else {return new ProcessBuilder("bash", "-c", command);}}/*** 执行系统命令* @param command* @return*/public static String executeCommand(String command) {try {ProcessBuilder pb = ShellUtil.getProcessBuilder(command);pb.redirectErrorStream(true);Process process = pb.start();process.waitFor();InputStream inputStream = process.getInputStream();BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));String line;StringBuilder result = new StringBuilder();while ((line = reader.readLine()) != null) {result.append(line);// 换行符result.append(System.lineSeparator());}process.waitFor();inputStream.close();reader.close();process.destroy();return result.toString();} catch (InterruptedException | IOException e) {throw new RuntimeException(e);}}public static void main(String[] args) {// System.out.println(ShellUtil.executeCommand("echo 'hello'"));// helloSystem.out.println(ShellUtil.executeCommand("python math.py 1 2"));// 3}
}

参考视频

  1. JAVA开发必会小技巧8——用代码调用系统指令
http://www.lryc.cn/news/103529.html

相关文章:

  • this is incompatible with sql_mode=only_full_group_by
  • GCC编译选项
  • 信息安全战线左移!智能网联汽车安全亟需“治未病”
  • 服务器介绍
  • Java_25_方法引用
  • QT基于TCP协议实现数据传输以及波形绘制——安卓APP及Windows程序双版本
  • mac 中 brctl 怎么用
  • 20.2 HTML 常用标签
  • mysql_2.5——【约束】详解
  • 回归预测 | MATLAB实现POA-CNN-BiLSTM鹈鹕算法优化卷积双向长短期记忆神经网络多输入单输出回归预测
  • opencv顺时针,逆时针旋转视频并保存视频
  • 【LeetCode】最小路径和
  • zygote forkSystemServer及systemServer启动
  • 享元模式-提供统一实现对象的复用
  • Jenkins工具系列 —— 在Ubuntu 18.04上安装各种版本OpenJDK
  • vue基础-虚拟dom
  • C#时间轴曲线图形编辑器开发2-核心功能实现
  • 【Git】初始化仓库配置与本地仓库提交流程
  • 学习day53
  • 【最短路算法】SPFA
  • 牛客网Verilog刷题——VL48
  • Unity UGUI的Shadow(阴影)组件的介绍及使用
  • Kubernetes系列
  • 同步锁: synchronized
  • 【微服务】springboot 多模块打包使用详解
  • 嵌入式工程师面试经常遇到的30个经典问题
  • ER系列路由器多网段划分设置指南
  • 3 PostGIS基础查询
  • Shell错误:/bin/bash^M: bad interpreter: No such file or directory
  • Golang之路---01 Golang的安装与配置