gpt4 book ai didi

python - 将 "key : value"形式的字符串转换为列表或字典并提取值

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:56:49 25 4
gpt4 key购买 nike

我需要使用 linux 命令提取系统的空闲内存

cat /proc/meminfo

输出是这样的:

MemTotal:        1979676 kB
MemFree: 396244 kB
Buffers: 265048 kB
Cached: 629892 kB
SwapCached: 60 kB
Active: 503916 kB
Inactive: 770644 kB
Active(anon): 116564 kB
Inactive(anon): 369112 kB
Active(file): 387352 kB
Inactive(file): 401532 kB
Unevictable: 0 kB
Mlocked: 0 kB
SwapTotal: 2025468 kB
SwapFree: 2025276 kB
Dirty: 208 kB
Writeback: 0 kB
AnonPages: 379692 kB
Mapped: 76752 kB
Shmem: 106056 kB
Slab: 253328 kB
SReclaimable: 231816 kB
SUnreclaim: 21512 kB
KernelStack: 2720 kB
PageTables: 22152 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 3015304 kB
Committed_AS: 2489860 kB
VmallocTotal: 34359738367 kB
VmallocUsed: 538576 kB
VmallocChunk: 34359176332 kB
HardwareCorrupted: 0 kB
AnonHugePages: 210944 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
DirectMap4k: 38908 kB
DirectMap2M: 1988608 kB

现在,我只对前两行感兴趣,即参数 MemTotal 和 MemFree。我编写了以下代码来提取前 2 个参数:

mi_l=[]
mt_l=[]
mf_l=[]
mf=[]
mi_j=[]
mi_mt=[]
mi_mf=[]
t=0
for i in range(0,4):
tn1.write("cat /proc/meminfo")
tn1.write("\n")
time.sleep(2)
rd_buf = telnet.read_very_eager()
mi=rd_buf.splitlines()[:3]
print "splitlines :\n"+str(mi)
for ln in mi:
mi_l.append([int(p) for p in ln.split() if p.isdigit()])
print(mi_l)
for i in range(0,12):
print(mi_l[i])
for i in range(4,12):
if i%3!=0:
mt_l.append(mi_l[i])
avail_mem=mt_l[0]
print(mt_l)
for i in range(0,6):
if i%2!=0:
mf_l.append(mt_l[i])
print(mf_l)
for i in mf_l:
t=t+i
print(t)
ram_free=t/3
print "Total Available Memory : "+str(avail_mem)+"Free RAM :"+str(ram_free)

如您所见,我尝试提取 MemFree 参数 3 次并取这 3 个值的平均值。但是我收到错误消息 unsupported operand types for '+' : 'int' and 'list' 这是当我意识到 mf_l 结果是列表中的列表时.获得我需要的东西的最佳方式是什么?如果有人建议调整代码或替代解决方案,那将很有帮助。

最佳答案

首先,您可以使用 head -n 2/proc/meminfo 而不是 cat/proc/meminfo 来仅获取 的前两行/proc/内存信息.

然后你可以从第二行中提取数字并将其转换为数字,如下所示:

import os

mem_free = 0
for i in range(4):
tn1.write("head -n 2 /proc/meminfo")
tn1.write("\n")
time.sleep(2)
rd_buf = telnet.read_very_eager()
mi=rd_buf.splitlines()[:3]
mem_free += int(mi[2].split()[1])

mem_free /= 4.0

关于python - 将 "key : value"形式的字符串转换为列表或字典并提取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35474429/

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