我编写了一个脚本来运行具有不同输入参数的命令行程序,并从输出中获取特定的行。我有以下循环运行:
p1 = subprocess.Popen(["program", args], stderr=subprocess.STDOUT, stdout=subprocess.PIPE, shell=False)
p2 = subprocess.Popen(["grep", phrase], stdin=p1.stdout, stdout=subprocess.PIPE, shell=False)
p1.wait()
p2.wait()
p = str(p2.stdout.readlines())
print 'p is ', p
一个问题是循环运行完成后只有输出。我想在每次进程完成时打印一些东西。我怎样才能做到这一点?
另外,我希望可以选择显示 p1 的输出。但是我不能在不破坏 p2 的情况下用 p1.stdout.readlines() 抓住它。我怎样才能做到这一点?
我在想我不能调用 grep,存储 p1 的输出并搜索短语,但是有很多输出,所以这种方式似乎效率很低。
任何建议将不胜感激。谢谢!