Чтение файла журнала во время работы подпроцесса - PullRequest
0 голосов
/ 04 марта 2020

У меня есть процесс, который выводит журналы в файл, и я пытаюсь создать сценарий python для запуска этого процесса и выводить только тот журнал, который он генерирует, в этот файл журнала.

Что Я написал ниже, кажется, делает то, что я хочу, за исключением одной большой проблемы: она никогда не существует, пока l oop. Я попробовал несколько других вариантов без удачи.

Любая помощь здесь будет очень признательна! Думаю, стоит отметить, что я мог бы использовать вместо этого скрипт узла ...

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()

1 Ответ

0 голосов
/ 05 марта 2020

Команда tail -f предназначена для выполнения до явного прерывания, поэтому l oop никогда не завершается. Вы можете попробовать это:

import subprocess

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

, который будет ждать, пока cmd не завершится, и вернет содержимое своих выходных потоков в stdout и stderr.

...