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

SpringBoot——如何运行Python脚本并返回数据

文章目录

  • 运行python脚本并输出
  • 如何输入参数

运行python脚本并输出

要让Python脚本返回数据给调用它的Java代码,你可以在Python脚本中使用打印或输出函数将结果输出到标准输出(stdout)中。

以下是一个示例,在Python脚本中返回数据给Java代码:

Python脚本(script.py):

result = "Hello from Python!"  # 要返回的数据
print(result)  # 将结果打印到标准输出

Java代码:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;public class PythonScriptExecutor {public static void main(String[] args) {try {String pythonScriptPath = "path/to/your/script.py";  // 替换为你的Python脚本路径ProcessBuilder processBuilder = new ProcessBuilder("python", pythonScriptPath);Process process = processBuilder.start();BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));String line;while ((line = reader.readLine()) != null) {// 读取Python脚本的输出,并处理返回的数据System.out.println("Python script output: " + line);// ... 在此处进行进一步的处理}int exitCode = process.waitFor();System.out.println("Python script executed with exit code " + exitCode);} catch (IOException | InterruptedException e) {e.printStackTrace();}}
}

在这个示例中,Python脚本通过print(result)语句将结果打印到标准输出。在Java代码中,我们通过读取process.getInputStream()获取Python脚本的输出,然后可以将返回的数据进行进一步的处理。

请注意,Python脚本的输出将逐行读取,并以字符串的形式返回。你可以根据实际需求进行进一步的处理和解析。

这是一种简单的方式,让Python脚本返回数据给Java代码。当然,你也可以使用其他的数据交换方式,如在文件中写入数据,让Java代码读取文件,或者使用Socket进行通信等,具体取决于你的需求和场景。

如何输入参数

如果想在执行Python脚本时传递参数,你可以在ProcessBuilder中设置参数。

示例代码:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;public class PythonScriptExecutor {public static void main(String[] args) {try {String pythonScriptPath = "path/to/your/script.py"; // 替换为你的Python脚本路径String param1 = "Hello";String param2 = "World";// 构建ProcessBuilder,并指定执行的Python解释器、脚本路径和参数ProcessBuilder processBuilder = new ProcessBuilder("python", pythonScriptPath, param1, param2);Process process = processBuilder.start();// 获取脚本的输出BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));String line;while ((line = reader.readLine()) != null) {System.out.println(line);}// 等待脚本执行完成int exitCode = process.waitFor();System.out.println("Python script executed with exit code " + exitCode);} catch (IOException | InterruptedException e) {e.printStackTrace();}}
}

在以上示例中,param1param2是要传递给Python脚本的参数。你可以根据需要添加或修改参数的数量。

在Python脚本中,你可以使用sys.argv来接收命令行参数。sys.argv[0]是脚本的名称,sys.argv[1]是第一个参数,以此类推。以下是一个使用参数的Python脚本示例:

import sysparam1 = sys.argv[1]
param2 = sys.argv[2]# 在脚本中处理参数
print("Parameter 1:", param1)
print("Parameter 2:", param2)

通过这种方式,可以将参数传递给Python脚本并在脚本中进行处理。运行Java代码时,参数将被传递给Python脚本,并显示在Java控制台上。

http://www.lryc.cn/news/120649.html

相关文章:

  • 在生产环境中部署Elasticsearch:最佳实践和故障排除技巧———索引与数据上传(二)
  • R语言初学者书籍推荐
  • Taro+Vue3,点击按钮把另一个页面分享出去
  • CSS基础:学习CSS样式的基本语法和应用,了解如何美化网页。
  • MySQL语句总和之表数据操作(增删改查)
  • HDFS中snapshot快照机制
  • YOLOv5基础知识入门(5)— 损失函数(IoU、GIoU、DIoU、CIoU和EIoU)
  • Centos7源码安装redis
  • [静态时序分析简明教程(九)]多周期路径set_multicycle_path
  • Unity学习笔记--使用 C# 开发一个 LRU
  • 【一】初步认识数据库
  • HTML <section> 标签
  • PHP 之房贷计算器、组合贷
  • 解决Vue+Element UI使用表单rules国际化时From表单验证信息不能实时更新
  • 友善之臂NanoPi NEO利用fbtft驱动点亮1.69寸ST7789V2屏幕
  • MFC第三十天 通过CToolBar类开发文字工具栏和工具箱、GDI+边框填充以及基本图形的绘制方法、图形绘制过程的反色线模型和实色模型
  • Android Https
  • Games101学习笔记2
  • java字符串String类的常用方法
  • 自动化测试如何解决chrome自动更新问题
  • 闲鱼卖货:新手容易踩坑的7个地方。赶紧看看有没有中招?
  • PowerShell 获取某目录下所有的文件、文件夹,同时对获取到的文件路径字符串进行替换处理
  • JUC并发编程之线程锁(一)
  • Android AlertDialog标题居中
  • k8s界面化平台dashboard、kubesphere、Rancher对比
  • 【字符串左旋】
  • Docker Dirtypipe(CVE-2022-0847)漏洞复现与分析容器逃逸
  • python接口自动化测试框架2.0,让你像Postman一样编写测试用例,支持多环境切换、多业务依赖、数据库断言等
  • Vue.js2+Cesium1.103.0 九、淹没分析效果
  • SpringBoot案例-部门管理-新增