В системах POSIX, когда вы используете Popen(['find', '.', '-iname', '"*.sln"'], shell=True)
, Python делает это:
/bin/sh -c find . -iname "*.sln"
Если вы прочитаете документацию для sh
, вы обнаружите, что только первый аргумент после -c
обрабатывается как командная строка для выполнения в качестве сценария оболочки.Остальные аргументы фактически обрабатываются как аргументы для сценария оболочки .В этом случае, поскольку сценарий оболочки состоит исключительно из имени команды «find», аргументы игнорируются.Вы можете наблюдать это поведение, если вы запустите:
>>> subprocess.call(['echo arg0 = $0, arg1 = $1', 'foo', 'bar'], shell=True)
arg0 = foo, arg1 = bar
0