Как с помощью python получать результат команды в терминале и при этом получать результат по мере выполнения этой команды?
Я знаю, что получить результат команды из терминала, можно получить таким кодом на python:
import subprocess
command = ['ipconfig']
p = subprocess.Popen(command, stdout=subprocess.PIPE, stderr=subprocess.IGNORE)
text = p.stdout.read()
retcode = p.wait()
Здесь, я получаю результат выполнения команды, когда она закончится, ну а если запустить бесконечный ping, например, то результат я не получу. Так как мне получать результат команды по мере её выполнения на python?
Моя ОС: Windows 10
Но если такое возможно, приведите кросс-платформенное решение.
UPD: Я Имел ввиду, что как только терминал даст какой-нибудь результат, сразу же записывать его в переменную, примерно так:
import threading
import module_name #Какой-то модуль
from time import sleep
cmd = input()
result = ""
def term_res():
while True:
result += module_name.get_res_from_cmd(cmd)
potok = threading.Thread(target=term_res, daemon=True)
potok.start()
while True:
print(result)
sleep(10)
Ответы (1 шт):
У меня не получилось найти ответ в интернете, но комментариях предложили: https://ru.stackoverflow.com/a/1141679/384202 . Этот ответ работает для Windows, но как я понял для других ОС расширение .bat надо просто поменять на другое, которое выполняет их терминал.