如何使shell理解正在传递的通配符子流程调用()

2024-04-23 09:47:05 发布

您现在位置:Python中文网/ 问答频道 /正文

执行脚本时,出现以下错误:

['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,但没有成功。你知道吗


Tags: orno命令脚本os错误shellgrep
1条回答
网友
1楼 · 发布于 2024-04-23 09:47:05

*是由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)

相关问题 更多 >