gpt4 book ai didi

python - Linux命令输出到字典-python

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

下面的例子是我从一个网站上拿来一行解析vmstat

vmstat | python -c 'import sys; print dict(zip(*map(str.split, sys.stdin)[-2:])).get("id")'

92

但是我正在尝试将其用于代码而不是一行。 ,但我无法获得字典值。它总是没有

    import os
import sys
import subprocess
mydict = {}
cmd = subprocess.Popen('vmstat',stdout=subprocess.PIPE)
msg,err = cmd.communicate()
mydict= zip(*map(str.split, msg)[-2:])
print mydict

任何人都可以帮助我获得正确的字典值吗?

谢谢你的帮助

最佳答案

看来你要照顾\n 字符。我试过这个片段

>>> dict(zip(*map(str.split, msg.split("\n")[1:-1])))
{'wa': '0', 'sy': '1', 'b': '0', 'us': '5', 'bo': '34', 'cache': '872064', 'bi': '150', 'free': '5786860', 'st': '0', 'si': '0', 'r': '2', 'so': '0', 'swpd': '0', 'in': '167', 'cs': '647', 'id': '93', 'buff': '52920'}

现在是慢动作脚本:

#split by whitespace (default) all lines unless the first (vmstat caption) and the last one (the last return)
>>> map(str.split, msg.split("\n")[1:-1])
[['r', 'b', 'swpd', 'free', 'buff', 'cache', 'si', 'so', 'bi', 'bo', 'in', 'cs', 'us', 'sy', 'id', 'wa', 'st'], ['2', '0', '0', '5786860', '52920', '872064', '0', '0', '150', '34', '167', '647', '5', '1', '93', '0', '0']]

#create a list of tuples key-value of the previous output
>>> zip(*map(str.split, msg.split("\n")[1:-1]))
[('r', '2'), ('b', '0'), ('swpd', '0'), ('free', '5786860'), ('buff', '52920'), ('cache', '872064'), ('si', '0'), ('so', '0'), ('bi', '150'), ('bo', '34'), ('in', '167'), ('cs', '647'), ('us', '5'), ('sy', '1'), ('id', '93'), ('wa', '0'), ('st', '0')]

#pass that list of tuples to dict function
>>> dict(zip(*map(str.split, msg.split("\n")[1:-1])))
{'wa': '0', 'sy': '1', 'b': '0', 'us': '5', 'bo': '34', 'cache': '872064', 'bi': '150', 'free': '5786860', 'st': '0', 'si': '0', 'r': '2', 'so': '0', 'swpd': '0', 'in': '167', 'cs': '647', 'id': '93', 'buff': '52920'}

关于python - Linux命令输出到字典-python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34568421/

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