Use pipe in subprocess

Thu 12 November 2009
  • 把戏 tags:
  • linux
  • python published: true comments: true

问题:

您要通过python的subprocess模块执行一些命令,要在程序中获得命令的标准输出,此外,命令中还有管道操作。

解决:

以这个命令为例: cat /home/admin/deploy/log/2009-11-11.log |grep example.com |wc -l
import subprocess

cmd1 = 'cat /home/admin/deploy/log/2009-11-11.log'
cmd2 = 'grep example.com'
cmd3 = 'wc -l'

pipe1 = subprocess.Popen(cmd1.split(), stdout=subprocess.PIPE)
pipe2 = subprocess.Popen(cmd2.split(), stdin=pipe1, stdout=subprocess.PIPE)
pipe3 = subprocess.Popen(cmd3.split(), stdin=pipe2, stdout=subprocess.PIPE)

result = pipe3.communicate()[0]