Получить вывод оболочки в режиме реального времени и сохранить весь вывод в переменной - PullRequest
0 голосов
/ 09 октября 2019

Я ищу простой способ запустить команду оболочки в Python 3, получить ее вывод в режиме реального времени и, наконец, сохранить весь вывод в переменную.

Я искал в Интернете возможное решениено не смог найти. Я также нашел похожий вопрос на этом сайте , но никто не дал четкого ответа. Я получаю этот код, но это скорее обходной путь, чем ясное решение

def get_os_cmd(command):

 proc_file = '/tmp/proc.tmp'

 if os.path.isfile(proc_file):
     os.remove(proc_file)  # remove temporary file

 proc = subprocess.Popen(
    command,
    stdout=subprocess.PIPE,
    stderr=subprocess.PIPE,
    shell=True, encoding='utf-8')

 with open(proc_file, 'a+') as f:
     for line in iter(proc.stdout.readline, ''):
         string = line.rstrip()
         print(string)
         f.write(f'{string}\n')
 return proc.stdout, proc.returncode

1 Ответ

0 голосов
/ 09 октября 2019

doki.al Эта программа хороша и будет работать достаточно хорошо, я думаю.

import os
command = ['dir', 'echo program working']
for i in command:
    stream = os.popen(i)    # Execute the command in command list
    output = stream.read()  # Read the output of the executed program
    print(output)           # Print the output

Эта программа сначала выполняет команду в cmd, а затем читает и отображает ее.

ЭтоПрограмма возвращает вывод переменной в виде строки. Если вы хотите список, вы можете использовать

output = stream.readline()

Это будет включать все новые строки. Я надеюсь, что это решит вашу проблему. Если не можете вернуться в раздел комментариев.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...