связать несколько команд Popen с каналами

Я знаю, как выполнить команду, используя cmd = subprocess.Popen, а затем subprocess.communicate. Большую часть времени я использую строку с токеном shlex.split в качестве аргумента argv для Popen. Пример с "ls -l":

import subprocess
import shlex
print subprocess.Popen(shlex.split(r'ls -l'), stdin = subprocess.PIPE, stdout = subprocess.PIPE, stderr = subprocess.PIPE).communicate()[0]

Однако каналы, похоже, не работают ... Например, в следующем примере возвращается примечание:

import subprocess
import shlex
print subprocess.Popen(shlex.split(r'ls -l | sed "s/a/b/g"'), stdin = subprocess.PIPE, stdout = subprocess.PIPE, stderr = subprocess.PIPE).communicate()[0]

Можете ли вы сказать мне, что я делаю не так, пожалуйста?

Спасибо

Ответы на вопрос(4)

Ваш ответ на вопрос