在Windows 7 X32使用Cygwin,在VS解决方案目录,find
命令将产生正确的结果:Python的subprocess.Popen()结果与命令行不同?
$ find . -iname "*.sln"
./ProjName.sln
但Python的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 2012-02-10 16:37:02
@wes:我一直在进一步尝试,看起来'shell = True'需要将命令指定为单个参数。看到我更新的答案。 – NPE 2012-02-10 16:39:38
啊,是的,我现在在文档中看到了。谢谢。 – wes 2012-02-10 16:42:11