当我这样做时,在python代码中,
os.system("mpstat 1 10 | grep Average")
我得到了,在stdout:
“平均值:所有0.00 0.00 0.00 0.00”以及其他一些东西
我可以添加什么
mpstat 1 10 | grep Average | SOMETHING
获取包含以Average开头的行的变量?
我需要第一个数字和第二个数字的总和。
我在这里尝试了接受的答案:
Can I redirect the stdout in python into some sort of string buffer?
但它不起作用。
答案 0 :(得分:1)
取消os.system
电话。请改用subprocess.Popen
。这是你如何做到的:
>>> from subprocess import Popen
>>> from subprocess import PIPE
>>> mpstat = Popen(["mpstat", "1", "10"], stdout=PIPE)
>>> grep = Popen(["grep", "Average"], stdin=mpstat.stdout, stdout=PIPE)
>>> mpstat.stdout.close()
>>> res, err = grep.communicate()
>>> res
'Average: all 0.79 0.00 0.46 0.03 0.00 0.01 0.00 0.00 0.00 98.71\n'
>>> res.strip().split()
['Average:', 'all', '0.79', '0.00', '0.46', '0.03', '0.00', '0.01', '0.00', '0.00', '0.00', '98.71']
>>> res.strip().split()[2:4]
['0.79', '0.00']
>>> values = map(float, res.strip().split()[2:4])
>>> values
[0.79, 0.0]