0
当我执行脚本我得到这个错误:如何使外壳了解到,正在通过subprocess.call通过通配符()
['grep', 'PORTALSHARED', '*']
grep: *: No such file or directory
同样的命令,当我执行上工作得很好贝壳。
下面是脚本:
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
但没有奏效。
你确定你要发送的完整的字符串,而不是分裂的版本,因为我有在答复中说。 –
我很抱歉,评论是其他答案。我认为你的解决方案似乎很有用,因为它需要一些时间来获得结果。顺便说一下,请允许我告诉我如何通过'grep PORTALSHARED * | awk -F'[''{print $ 1}'''命令通过'subprocess'作为'shlex.split'只做这个'['grep','PORTALSHARED','*','|','awk',' -F','[','{print $ 1}']'子进程需要每个项目用单引号引起来。 –
您不能在shell = True的情况下使用'shlex.split()'。所以不要分割,直接使用字符串,使用'双引号'来创建字符串,而不是单引号。就像''grep PORTALSHARED * | awk -F'[''{print $ 1}'“' –