格式化输出数据

2024-06-28 18:52:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我是个编程新手。面对这样的问题。正在使用Zabbix监视服务器。它有自己的API。在Python中输入一个关于打印机和监视器的信息。输出文件的格式应为:

名称打印机\tab计数器打印机

像这样:

HP1212 124512

我连接并接收数据,但无法使用'\t'将其记录在两列中。 我的代码:

`

from pyzabbix import ZabbixAPI
zapi = ZabbixAPI("http://*****/zabbix")
zapi.login("******", "*******")
item_name='Print_counter'
hosts = zapi.host.get(                               #get printers  name
                groupids=8,
                output=['name'])
items = zapi.item.get(                               #get printers counter
                groupids=8,
                output=['lastvalue'],
                filter={'name':item_name})`

我知道这个问题可能很小,但我不知道如何解决。在

我编辑了我的问题:

如果im使用: for host in hosts: a = host['name'] print a 。。我得到:

^{pr2}$

是我的打印机。在

如果我使用: for item in items: b = host['value'] print b 我得到:

12456
34645
...
56468

它能抵挡我的打印机。在

我想将查询的输出分组如下:

tpr001  12456
tpr002  34645
...     ...
tpr020  56468

Tags: nameinhostforoutputgetcounter打印机
3条回答

我想你需要这样的东西:

for host in hosts:
    a=host['name']
    for item in items:
        b=item['lastvalue']
        print a,'\t',b`

我不知道你到底给了什么zapi.host.get以及zapi.item.get,但你的循环不起作用,如你所料。 在第一个循环中,a在每个循环中都会得到一个新值,因此如果循环结束,您将找到其中的最后一个值。由于循环后的print命令,您可以看到精确的值。在

也许你应该把第二个循环放到第一个循环里

for host in hosts:
    a=host['name']
    for item in items:
        b=item['lastvalue']
        print a,'\t',b`

但在本例中,您将合并来自主机的每一行和来自项的每一行。 也许你的项目。获取-命令需要名称es filter,类似于

^{pr2}$

也许你甚至不需要问主人,因为你所有的信息都在里面

for item in items:
    b=item['lastvalue']
    a=item['name']
    print a,'\t',b

希望,这有帮助,但我认为你应该学习编程的基础知识,如果你想更进一步(而且更容易理解的是,如果你给出的是说的名字而不是a和b,这样不仅我们能更好地理解你所期望的

我觉得很奇怪,你想依赖两个不同列表的输出顺序。如果是的话,你可以试试

for i in range(len(Hosts)):
    host = Hosts[i]
    item = Items[i]
    a=host['name']
    b=item['lastvalue']
    print a,'\t',b

相关问题 更多 >