gpt4 book ai didi

python - 如何使用 python 从 vmstat 命令中删除 CPU 信息

转载 作者:太空宇宙 更新时间:2023-11-03 17:30:18 28 4
gpt4 key购买 nike

vmstat 命令有以下输出,我正在尝试删除 cpu 部分并在 python 中打印
vmstat

procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
r b swpd free buff cache si so bi bo in cs us sy id wa
0 0 30468 23468 36496 837876 0 0 143 179 57 105 2 1 97 1

使用以下 python 代码我丢失了空格,如何正确格式化这样输出看起来与上面的 cpu 部分完全一样,但删除了 cpu 部分

import subprocess
p = subprocess.Popen('vmstat', shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
line1 = p.stdout.readlines()
line2 = ' '.join(line1[0].split()[:-1])
line3 = ' '.join(line1[1].split()[:-5])
line4 = ' '.join(line1[2].split()[:-5])
print line2
print line3
print line4

procs -----------memory---------- ---swap-- -----io---- -system--
r b swpd free buff cache si so bi bo in
0 0 30468 20608 36548 837880 0 0 143 179 57

最佳答案

我们首先找到CPU头的位置,然后剥离剩余的字符。我已将其设为通用,因此使用字段名称调用 vmstat_without_field 会将其从输出中删除。

import subprocess
import re

def vmstat_without_field(field = 'cpu'):
lines = subprocess.Popen('vmstat', shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT).stdout.readlines()
match_obj = re.search('\s-+%s-+' % field, lines[0])
start = match_obj.start()
end = match_obj.end()

for line in lines:
line = line[:start] + line[end:]
line = line[:-1] if line[-1] == '\n' else line
print(line)

vmstat_without_field()

关于python - 如何使用 python 从 vmstat 命令中删除 CPU 信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31937257/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com