将一个子进程的stdout管道化为另一个子进程的stdin不会产生预期的结果

时间:2016-09-12 15:42:28

标签: python linux pipe subprocess

我正在尝试处理日志文件以从文件末尾提取一些信息。日志文件很大,我正在查找的信息位于文件的末尾。 我使用python子进程方法实现如下:

p1.subprocess.Popen(['tail', '-n', '100', logFile], stdout=PIPE)
p2.subprocess.Popen(['grep', 'Output[ 1 ].*Perf'], stdin=p1.stdout,
                    stdout=PIPE, stderr=PIPE)
procOut,procErr = p2.communicate()
print procOut # Nothing gets printed

想知道我在这里做的事情是否非常错误。当我在shell中执行这两个管道命令时,我得到了我正在寻找的输出。但是,当我尝试用Python做的时候不行。

0 个答案:

没有答案