Использование Cygwin на Windows 7 x32, в каталоге решения VS, команда find
производит правильные результаты:Результаты подпроцесса Python.Popen() отличаются от командной строки?
$ find . -iname "*.sln"
./ProjName.sln
но та же команда с Питона subprocess.Popen()
, кажется, соответствие на *
в одиночку:
>>> import subprocess
>>> print subprocess.Popen(['find', '.', '-iname', '"*.sln"'],
... stdout=subprocess.PIPE, shell=True).communicate()[0]
.
./.git
./.git/COMMIT_EDITMSG
./.git/config
./.git/description
<snip>
Что случилось с моим звонком Popen()
?
Я удалил свой первый комментарий. 'shlex.split()' удалит кавычки вокруг шаблона, но я все еще не уверен, почему 'shell = True' вызывает полное совпадение. – wes
@wes: Я экспериментировал с этим дальше, и кажется, что 'shell = True' требует, чтобы команда была указана как один аргумент. См. Мой обновленный ответ. – NPE
Ах да, я вижу это в документах сейчас. Благодарю. – wes