【问题标题】:Read a log file while a subprocess is running在子进程运行时读取日志文件
【发布时间】:2020-06-17 00:45:24
【问题描述】:

我有一个将日志输出到文件的进程,我正在尝试制作一个 python 脚本来运行该进程并仅将它生成的日志输出到该日志文件中。

我在下面写的似乎做了我想要的,除了一个大问题:它从不存在 while 循环。我尝试了其他几种方法,但都没有成功。

这里的任何帮助将不胜感激!我想值得注意的是,我也可以使用节点脚本来代替......

import subprocess
import sh

process = subprocess.Popen(cmd)

log_tail = sh.tail("-f", log_file, _iter=True)

while process.returncode is None:
    sys.stdout.write(log_tail.next())
    sys.stdout.flush()
    process.poll()

【问题讨论】:

    标签: python logging subprocess tail


    【解决方案1】:

    tail -f 命令旨在运行直到显式中断,这就是循环永远不会退出的原因。你可以试试这个:

    import subprocess
    
    p = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
    stdout, stderr = p.communicate()
    

    它将等到cmd 终止并在stdout 和stderr 中返回其输出流的内容。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多