Как запомнить значение в переменную при вызове subprocess
Есть код
topic = "asde"
commandlisten = ("echo", ""+topic+"")
try:
commandOutput = subprocess.run(commandlisten, timeout=1)
print (commandOutput)
except subprocess.TimeoutExpired:
print ('asd')
при его выполнении выводит
asde
CompletedProcess(args=('echo', 'asde'), returncode=0)
как сохранить вывод командной строки в переменную то есть переменная commandOutput была равна asde
Ответы (1 шт):
Автор решения: mrEvgenX
→ Ссылка
Надо использовать subprocess.Popen и subprocess.Popen.communicate.
import subprocess
args = ["echo", "asde"]
process = subprocess.Popen(args, stdout=subprocess.PIPE)
data = process.communicate(timeout=1)
print(data[0].decode('utf-8'))
Метод communicate позволит нам связываться с созданным нами процессом. Говорят, можно даже передать процессу ввод.
После того, как процесс завершится, в data будет кортеж, состоящий из двух элементов - содержимое stdout и stderr, бинарной строкой.