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