从终端执行此命令时:
\grep -inH -r --exclude-dir={node_modules,.meteor,.git} -e test -- /Users/nelsyeung/Sites/foo
它输出正确的结果,其中排除了--exclude-dir
目录。你知道吗
理论上,以下Python脚本应该执行完全相同的操作:
#!/usr/bin/env python3
from subprocess import Popen, PIPE
cmd = 'grep -inH -r --exclude-dir={node_modules,.meteor,.git} -e test -- /Users/nelsyeung/Sites/foo'
with Popen(cmd.split(), stdout=PIPE, bufsize=1, universal_newlines=True) as p:
for l in p.stdout:
print(l)
但是--exclude-dir
标志似乎被忽略了,也就是说,它也是来自node_modules
、.meteor
和.git
的grep。你知道吗
问题:为什么上面的代码输出的结果与执行命令不同?你知道吗
请注意,这比我寻找替代解决方案更像是一个理论问题,因为Python代码基本上来自我正在使用的插件,我只能为命令提供标志,而且令我惊讶的是,传入--exclude-dir
什么也做不了。如果上面的代码有问题,一定要指出。你知道吗
系统信息:
--exclude-dir
)
exclude-dir={dir1,dir2}
is expanded to是壳牌公司,而不是格雷普公司。
Popen
默认情况下使用shell=False
。你知道吗所以用
(请注意,虽然使用
shell=True
可能是另一种选择,但由于security issues的原因,它不是首选。)相关问题 更多 >
编程相关推荐