3

我正在努力用 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

我究竟做错了什么?

4

1 回答 1

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]

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

于 2013-07-13T15:06:20.703 回答