当我执行脚本时,我收到此错误:
['grep', 'PORTALSHARED', '*']
grep: *: No such file or directory
当我在shell上执行时,同样的命令工作正常。
以下是剧本:
a = shlex.split('grep PORTALSHARED *')
print a
for pdir, _, _ in os.walk(r'/Users/skandasa/perforce/projects/releases/portal-7651'):
os.chdir(pdir)
print os.getcwd()
subprocess.call(a)
我尝试添加shell = True
但没有效果。
答案 0 :(得分:2)
*
由shell扩展,因此如果您希望subprocess.call()
对其进行处理,则需要传入shell=True
。示例 -
a = 'grep PORTALSHARED *'
subprocess.call(a, shell=True)
请注意,使用shell=True
时,您应该发送完整的字符串作为命令,而不是split
版本。
但鉴于此,我认为你真的不需要os.chdir()
,你可以尝试 -
a = 'grep PORTALSHARED {}'
for pdir, _, _ in os.walk(r'/Users/skandasa/perforce/projects/releases/portal-7651'):
subprocess.call(a.format(pdir + '/*'), shell=True)