簡體   English   中英

在子進程運行時讀取日志文件

[英]Read a log file while a subprocess is running

我有一個將日志輸出到文件的進程,我正在嘗試制作一個 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()

tail -f命令旨在運行直到被明確中斷,這就是循環永遠不會退出的原因。 你可以試試這個:

import subprocess

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

它將等到cmd終止並在stdoutstderr返回其輸出流的內容。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM