Конвейер оболочки с подпроцессом в Python

Я прочитал каждый поток, который нашел на StackOverflow, при вызове команд оболочки из Python с использованием подпроцесса , но я не смог найти ответ, который применим к моей ситуации ниже:

Я хотел бы сделать следующее из Python:

  1. Запустить команду оболочки command_1 . Соберите вывод в переменной result_1

  2. Shell pipe result_1 в command_2 и соберите вывод на result_2 . Другими словами, запустите command_1 | command_2 с использованием результата , который я получил при запуске command_1 на шаге до

  3. . Сделайте то же самое, связав конвейер 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 не моделирует процесс получения вывода команды для конвейера .

Возможно ли это вообще с помощью подпроцесса? Если да, то как?

9
задан rypel 22 May 2013 в 20:42
поделиться