Я предполагаю, что это может быть экранирование оболочки?
Может быть, лучше разбить аргументы самостоятельно и полностью избежать оболочки?
import subprocess
subprocess.Popen(["egrep","-r","--exclude=*{.git,.svn}*","text","~/directory"], stdout=subprocess.PIPE).communicate()[0]
NB. Возможно, вам придется расширить ~
, я не уверен.
Или, если предполагается, что bash расширяет скобки, вы можете сделать это на python:
excludes = ['.git','.svn']
command = ['egrep','-r']
for e in excludes:
command.append('--exclude=*%s*'%e)
command += ["text","~/directory"]
subprocess.Popen(command, stdout=subprocess.PIPE).communicate()[0]