网站地图 联系我们

学习python首选-实战python学习班,专注于python高级工程师培养,python课程:包括Python核心编程技术、全栈开发、网络爬虫、人工智能等。python全栈工程师+提高工作经验,获取免费试听课程!
当前位置: python培训 > python学习 > 常见问题 > 正文

Java程序调用python脚本,脚本日志如何输入到日志文件中?

来源:肚皮舞 浏览量: 发布日期:20-08-31 10:53:34 调整字体大小【 【所属栏目:常见问题】

  Java调用python脚本遇到的两个问题,求教:

  1、Java调用python脚本,python脚本不会输出日志到日志文件;

  但是单独运行python脚本会输出日志文件,为什么?怎么解决?

  2、Java调用python脚本,只会在脚本执行结束后才可以一次性获取脚本日志信息,怎么实现实时获取脚本执行日志?

  相关代码和脚本

  终端直接执行,会生成日志文件

  python /tmp/pytest.py >>/tmp/pylog.log 2>&1

  Java调用,不会新建生成日志文件

  ···

  Runtime.getRuntime().exec(“python /tmp/pytest.py >>/tmp/pylog.log 2>&1”)

  ···

  python脚本

  #!/usr/bin/python

  # -*- coding: UTF-8 -*-

  import logging

  import time

  logging.basicConfig(level=logging.DEBUG)

  for num in range(0, 3):

  time.sleep(1)

  logging.info('logging 当前序号 :' + str(num) )

  print' print当前序号 :', num

  1 建立sh文件

  cd /tmp && echo "/usr/bin/python /tmp/pytest.py >>/tmp/pylog.log 2>&1" >> pytest.sh

  2 在java中执行sh文件

  java中执行 Runtime.getRuntime().exec(“/usr/bin/sh /tmp/pytest.sh”)

  3 解决。

  PS:python和sh命令记得使用绝对地址。

  我终端是/usr/bin/python 和/usr/bin/sh ,你自己终端记得做响应调整。

  不要在Runtime.exec()里使用重定向符,而是用process.getInputStream()获得日志。例如:

  Process process = Runtime.getRuntime().exec("python /tmp/pytest.py");

  try (FileOutputStream out = new FileOutputStream("/tmp/pylog.log")) {

  Streams.copy(process.getInputStream(), out);

  }

标签:
肚皮舞新闻动态News Center

肚皮舞视频

肚皮舞培训课程

联系卡伊丝contact us
联系我们
python培训「零基础入门到精通」python人工智能编程培训班-0798wz.com

咨询热线:18301225663