我有下面的输出,我是通过python函数得到的,我在for循环中接收下面的每一行文本(作为info)。你知道吗
y.y.y.y:/mount/name mounted on /var/log/da:
op/s rpc bklog
2579.20 2.00
read: ops/s kB/s kB/op retrans avg RTT (ms) avg exe (ms)
1.000 2.000 3.000 4 (4.0%) 5.000 6.000
write: ops/s kB/s kB/op retrans avg RTT (ms) avg exe (ms)
2578.200 165768.087 64.296 0 (0.0%) 21.394 13980.817
x.x.x.x:/mount/othername mounted on /data:
op/s rpc bklog
5.00 10.00
read: ops/s kB/s kB/op retrans avg RTT (ms) avg exe (ms)
0.000 0.000 0.000 0 (0.0%) 0.000 0.000
write: ops/s kB/s kB/op retrans avg RTT (ms) avg exe (ms)
0.000 0.000 0.000 0 (0.0%) 0.000 0.000
理想情况下,我希望有一个字典,其中包含mountname作为键,后跟所有度量(op/s、rpc、read ops等)的列表。你知道吗
到目前为止,我掌握的情况如下:
for line in info:
if ":/" in line[0]:
section = "mountpoint"
mountname = line[0]
continue
elif "op/s" in line[0]:
section = "globals"
continue
elif "read:" in line[0]:
section = "reads"
continue
elif "write:" in line[0]:
section = "writes"
continue
#if section == "mountpoint":
# pass
if section == "globals":
mountglobals = line
for i in mountglobals:
infos.append(i)
if section == "reads":
reads = line
for i in reads:
infos.append(i)
if section == "writes":
writes = line
for i in writes:
infos.append(i)
parsed[mountname] = {
"infos": infos
}
我在迭代方面遗漏了一些东西,因为它会相应地添加键,但是度量列表包含所有度量。我不确定如何指定哪个度量列表属于哪个装入点/键。你知道吗
以下是信息:
[[u'y.y.y.y:/mount/name', u'mounted', u'on', u'/var/log/da:'], [u'op/s', u'rpc', u'bklog'], [u'2579.20', u'2.00'], [u'read:', u'ops/s', u'kB/s', u'kB/op', u'retrans', u'avg', u'RTT', u'(ms)', u'avg', u'exe', u'(ms)'], [u'1.000', u'2.000', u'3.000', u'4', u'(4.0%)', u'5.000', u'6.000'], [u'write:', u'ops/s', u'kB/s', u'kB/op', u'retrans', u'avg', u'RTT', u'(ms)', u'avg', u'exe', u'(ms)'], [u'2578.200', u'165768.087', u'64.296', u'0', u'(0.0%)', u'21.394', u'13980.817'], [u'x.x.x.x:/mount/othername', u'mounted', u'on', u'/data:'], [u'op/s', u'rpc', u'bklog'], [u'5.00', u'10.00'], [u'read:', u'ops/s', u'kB/s', u'kB/op', u'retrans', u'avg', u'RTT', u'(ms)', u'avg', u'exe', u'(ms)'], [u'0.000', u'0.000', u'0.000', u'0', u'(0.0%)', u'0.000', u'0.000'], [u'write:', u'ops/s', u'kB/s', u'kB/op', u'retrans', u'avg', u'RTT', u'(ms)', u'avg', u'exe', u'(ms)'], [u'0.000', u'0.000', u'0.000', u'0', u'(0.0%)', u'0.000', u'0.000']]
我的电流输出如下:
{u'y.y.y.y:/mount/name': {'infos': [u'2579.20', u'2.00', u'1.000', u'2.000', u'3.000', u'4', u'(4.0%)', u'5.000', u'6.000', u'2578.200', u'165768.087', u'64.296', u'0', u'(0.0%)', u'21.394', u'13980.817', u'5.00', u'10.00', u'0.000', u'0.000', u'0.000', u'0', u'(0.0%)', u'0.000', u'0.000', u'0.000', u'0.000', u'0.000', u'0', u'(0.0%)', u'0.000', u'0.000']}, u'x.x.x.x:/mount/othername': {'infos': [u'2579.20', u'2.00', u'1.000', u'2.000', u'3.000', u'4', u'(4.0%)', u'5.000', u'6.000', u'2578.200', u'165768.087', u'64.296', u'0', u'(0.0%)', u'21.394', u'13980.817', u'5.00', u'10.00', u'0.000', u'0.000', u'0.000', u'0', u'(0.0%)', u'0.000', u'0.000', u'0.000', u'0.000', u'0.000', u'0', u'(0.0%)', u'0.000', u'0.000']}}
谢谢你的提示。你知道吗
除非您的输入非常大(我不认为是这样),否则我建议您将整个输入读入一个字符串(以下示例假设您的所有输入都在变量
s
中),并使用re.findall
更容易地解析挂载名称和每个挂载名称的相关16个数字:parsed
将变成:相关问题 更多 >
编程相关推荐