Я прочитал каждый поток, который нашел на StackOverflow, при вызове команд оболочки из Python с использованием подпроцесса
, но я не смог найти ответ, который применим к моей ситуации ниже:
Я хотел бы сделать следующее из Python:
Запустить команду оболочки command_1
. Соберите вывод в переменной result_1
Shell pipe result_1
в command_2
и соберите вывод на result_2
. Другими словами, запустите command_1 | command_2
с использованием результата , который я получил при запуске command_1
на шаге до
. Сделайте то же самое, связав конвейер result_1
с третьей командой command_3
и собираем результат в result_3
.
Пока я пытался:
p = subprocess.Popen(command_1, stdout=subprocess.PIPE, shell=True)
result_1 = p.stdout.read();
p = subprocess.Popen("echo " + result_1 + ' | ' +
command_2, stdout=subprocess.PIPE, shell=True)
result_2 = p.stdout.read();
причина, похоже, в том, что "echo" + result_1
не моделирует процесс получения вывода команды для конвейера .
Возможно ли это вообще с помощью подпроцесса? Если да, то как?