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

Java调Python脚本实时输出print信息

Java调Python脚本实时输出print信息

在Java中,通过Runtime调用Python脚本时,如果要实时输出脚本的print信息,需要加上参数“-u”。否则Python默认会有输出缓存。
python -h有说明:

测试脚本:

import sys import time looptime=5 while looptime>0: print "Hello World! " + str(looptime) print time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) looptime -= 1 time.sleep(3)

Java代码:

public static void main(String[] args) { Runtime runtime = Runtime.getRuntime(); Process pro = null; ArrayList<String> cmd = new ArrayList<String>(); cmd.add("python"); cmd.add("-u"); //!!!==加上参数u让脚本实时输出==!!! cmd.add("script/python/test.py"); cmd.add("param1=value1#param2=value2") pro = runtime.exec(cmd.toArray(new String[0])); Thread oThread = printMessage(pro.getInputStream(), pro.getErrorStream()); oThread.join(); int status = pro.waitFor(); System.out.println("Script exit code is:"+status); } public Thread printMessage(final InputStream out, final InputStream err) { Thread thread = new Thread(new Runnable() { public void run() { Reader outReader = new InputStreamReader(out); BufferedReader outBf = new BufferedReader(outReader); Reader errReader = new InputStreamReader(err); BufferedReader errBf = new BufferedReader(errReader); String outLine = null, errLine = null; try { while ((outLine = outBf.readLine()) != null || (errLine = errBf.readLine()) != null) { if(outLine!=null) { outLine = OmpUtils.dateAsString("yyyy-MM-dd HH:mm:ss.S", new Date()) + ">>" + outLine + "\n"; System.out.print("[OUT]------>>"+ outLine); } if(errLine!=null) { errLine = OmpUtils.dateAsString("yyyy-MM-dd HH:mm:ss.S", new Date()) + ">>" + errLine + "\n"; System.out.print("[ERR]------>>"+ errLine); } outLine = errLine = null; } outBf.close(); errBf.close(); } catch (IOException e) { logger.error("Error when read", e); try { outBf.close(); errBf.close(); } catch (IOException e1) { logger.error("Error when close", e1); } } } }); thread.start(); return thread; }
http://www.jsqmd.com/news/1281459/

相关文章:

  • 如何3步搞定B站评论数据分析:这个自动化工具让你轻松获取完整用户互动数据
  • 提交本地项目到码云报错
  • 【Bug已解决】Gemma 4 12B is not working 解决方案
  • ROS1阳性肺癌耐药怎么办?FDA批准新药Jideytro(zidesamtinib)带来新希望【海得康】
  • GEO优化怎么帮小企业获客?广拓时代拆解AI搜索新入口
  • 2026花桥镇高端实木定制公司哪家好避坑指南:6个挑选要点,帮你绕开90%的坑 - geo88
  • Envoy 安全加固:TLS 终止、mTLS 与 RBAC 访问控制
  • TPIC7710EVM评估板:汽车电子电机驱动系统开发与测试实战指南
  • 办公效率提升方案:OpenClaw 2.7.9 本地部署与电脑自动化实操指南
  • 字节 Agent 岗二面:RAG 的 Top-K 是不是越大越好?
  • Linux插件shellinabox结合翻译插件使用(以Chrome为例)
  • React组件化开发:核心原则与工程实践
  • 半导体晶圆制造中的Lot管理核心解析
  • 无人机体系化竞争:从单机对抗到系统集成的技术壁垒与工业逻辑
  • 连锁零售BI落地清单:从共性痛点到千店千面的执行节奏
  • 2026优选:沈阳户外景观照明源头厂家与关键选型准则 - 品牌发掘
  • 别再烧钱投流了!AI知识付费自然获客的3个私域裂变引擎(实测ROI达1:8.6)
  • 文件上传漏洞攻防实战:从CTF靶场到安全加固指南
  • FDA批准Decnupaz(pivekimab sunirine)治疗母细胞性浆细胞样树突状细胞肿瘤【海得康】
  • 游泰安大佛寺
  • 马奈绘画特征在油画创作《迎风的青春》中的应用研究
  • 在Windows上实现macOS级三指拖拽:ThreeFingerDragOnWindows完整指南
  • 【JAVA课程设计/毕业设计】基于SpringBoot+Vue的校园共享交通工具信息化管控系统实现 智慧校园单车资源分配与租借管理平台【附源码、数据库、万字文档】
  • 5个PUBG-Logitech压枪脚本高效配置的实战指南
  • 物联网设备安全芯片SE050与STM32F042K6集成方案
  • 【毕业设计选题】计算机专业毕业设计选题题目分享 2026
  • html中的锚点介绍和使用
  • 市面上测试稳定可靠的内存颗粒NAND芯片测试座生产商测试精度高
  • 终极Sketch设计转代码革命:Marketch如何让设计师与开发者无缝协作
  • 中国开源大模型策略:正在赢得全球AI竞赛