我认为您遇到了两个问题:
p = subprocess.Popen(['grep', "%s *.log"%userid]...
@H_404_6@
除非shell=True@H_404_6@将参数列表直接传递给
os.execvp@H_404_6@,否则它将无法按预期工作,这要求每个项目都是代表参数的单个字符串。您已经将两个单独的参数 压缩到一个字符串中(换句话说,grep将“
foo12 *.log@H_404_6@”解释为要搜索的 模式 ,而不是模式+文件列表)。
您可以通过以下方式解决此问题:
p = subprocess.Popen(['grep', userid, '*.log']...)
@H_404_6@
import glob
@H_404_6@
args = [‘grep’, userid] args.extend(glob.glob(‘*.log’) p = subprocess.Popen(args, …)