Я ищу простой способ запустить команду оболочки в 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