';波本';对象是不可订阅的python 2.6

';波本';对象是不可订阅的python 2.6,python,indexing,popen,Python,Indexing,Popen,我是Python新手,不知道如何在脚本中操作vmstat。我有这段代码来获取vmstat的输出,经过大量研究,我无法找到在runqueue1=sample1[0]中将其指定为变量的方法 sample1 = Popen(['vmstat'] ,stdout=PIPE, stderr=PIPE) stdout, stderr = sample1.communicate() stdout.splitlines()[1] time.sleep(1) sample

我是Python新手,不知道如何在脚本中操作vmstat。我有这段代码来获取vmstat的输出,经过大量研究,我无法找到在runqueue1=sample1[0]中将其指定为变量的方法

    sample1 = Popen(['vmstat'] ,stdout=PIPE, stderr=PIPE)
    stdout, stderr = sample1.communicate()
    stdout.splitlines()[1]
    time.sleep(1)

    sample2 = Popen(['vmstat'] ,stdout=PIPE, stderr=PIPE)
    stdout, stderr = sample2.communicate()
    stdout.splitlines()[1]
    time.sleep(1)


    sample3 = Popen(['vmstat'] ,stdout=PIPE, stderr=PIPE)
    stdout, stderr = sample3.communicate()
    stdout.splitlines()[1]
    time.sleep(1)


    sample4 = Popen(['vmstat'] ,stdout=PIPE, stderr=PIPE)
    stdout, stderr = sample4.communicate()
    stdout.splitlines()[1]
    time.sleep(1)

    sample5 = Popen(['vmstat'] ,stdout=PIPE, stderr=PIPE)
    stdout, stderr = sample5.communicate()
    stdout.splitlines()[1]
    time.sleep(1)


    runqueue1 = sample1[0]
    runqueue2 = sample2[0]
    runqueue3 = sample3[0]
    runqueue4 = sample4[0]
    runqueue5 = sample5[0]
我遇到了这个回溯错误:

Traceback (most recent call last):
   File "./cputool", line 106, in <module>
      cputool()
   File "./cputool", line 98, in cputool
      runqueue1 = sample1[0]
TypeError: 'Popen' object does not support indexing
回溯(最近一次呼叫最后一次):
文件“/cputool”,第106行,在
cputool()
文件“/cputool”,第98行,在cputool中
runqueue1=sample1[0]
TypeError:“Popen”对象不支持索引

有没有人建议我如何以不同的方式安排它,以便它可以被索引/订阅?除了popen之外,还有其他方法可以获取vmstat的值,以便将其分配给变量吗?

下面是一个简短的示例,我希望它可以帮助您了解基本知识:

import subprocess
import time

# delay between update in seconds for vmstats
interval = 2
# create the process
proc = subprocess.Popen(
    ['vmstat', str(interval)],
    stdout=subprocess.PIPE, stderr=subprocess.PIPE
)

while True:
        try:
                # read operations are *blocking*
                # using readline() instead of read() or readlines()
                # we could start processing a line as soon it is received
                print 'output: %s' % proc.stdout.readline()
        except BaseException, error:
                proc.terminate()
                print 'terminated by %s' % error

你想要什么价值观?e、 g.您希望
sample1[0]
返回什么?如果您正在寻找标准输出,您已经在进一步获取它:
stdout,stderr=sample1.communicate()
mypipe=os.popen('find.exe.-type f')myvar=mypipe.readlines()