связать несколько команд 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]
Можете ли вы сказать мне, что я делаю не так, пожалуйста?
Спасибо