无法在Python中读取bash脚本输出

时间:2013-07-13 14:34:55

标签: python bash

我正在试图解析Python中以下Bash脚本的输出

#!/bin/bash
for pid in `ps aux | grep '[i]nclude' | grep -v '[i]gnore' | awk '{ print $2 }'`; do ps -p $pid -o pid= -o etime=; done

像这样使用os.popen,但它返回一个空列表。

>>>import os
>>>p = os.popen('bin/findpid', 'r')
>>>p.readlines()
[]

同样,使用subprocess.Popen也不返回任何内容

>>>import subprocess
>>>subprocess.Popen('bin/findpid', shell=True)

在bash中运行脚本会输出类似这样的内容

 8849    02:58:26
 9696    01:58:27

我做错了什么?

1 个答案:

答案 0 :(得分:0)

你能尝试一下吗(我使用的是python 2.6.6,但可能你想在最新的python 2.6中使用它):

#!/usr/bin/python

import subprocess
import os

CMD = "bin/findpid"
p = subprocess.Popen(CMD, shell=True, stdout=subprocess.PIPE)
print p.communicate()[0]

UPDATE :可能,第一个grep的findpid脚本需要-v吗?