Форум сайта python.su
0
Здравствуйте.
Я совсем новичек. Столкнулся с такой проблемой. Занимаюсь мониторингом серверов через Zabbix. У него есть свой API. Стоит задача посредством скрипта на питоне подключаться к серверу мониторинга и вытаскивать данные о принтерах и их счетчиках и складывать в файл. Выходной файл должен иметь формат вида:
<имя принтра>,'\t',<счетчик принтера>
Я подключаюсь и получаю данные, но не могу их записать именно в две колонки через табуляцию. То есть получаю вывод вида:
<имя принтера P1>
<имя принтера P2>
….
<имя принтераPn>
<счетчик принтера P1>
<счетчик принтера P1>
…..
<счетчик принтера Pn>
Привожу листинг кода и надеюсь на помощь.
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}) for host in hosts: print host['name'] for item in items: print item['lastvalue']
Офлайн
253
komitoЭтот формат назывался бы tab separated values если бы у вас не было символов <> и ,.
Выходной файл должен иметь формат вида:
<имя принтра>,'\t',<счетчик принтера>
komitoНе удивительно, что запрограммировали то и получили. Поясните как вы хотели получить табуляции если вы их не печатаете?
То есть получаю вывод вида:…
import numpy as np a = np.array([["a",2],["b",3]]) np.savetxt("out.tsv", a, fmt="%s", delimiter="\t")
Отредактировано doza_and (Июнь 2, 2017 08:28:21)
Офлайн
0
Спасибо за ответ. Я некоректно описал задачу. Конечно мне не нужны символы <>. Мне просто нужен вывод вида:
имя принтера “табуляция” счетчик
Примерно так:
HP1212 3605
И конечно я пробовал через табуляцию выводить:
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}) for host in hosts: for item in items: print host['name'],'\t',item['lastvalue']
for host in hosts: a=host['name'] for item in items: b=item['lastvalue'] print a,'\t',b
for host in hosts: a=host['name'] for item in items: b=item['lastvalue'] print a,'\t',b
Офлайн
253
А почему вы не пробовали?
for host, item in zip(hosts,items): .....
Офлайн
0
doza_andСпасибо, так все получилось.
А почему вы не пробовали?
for host, item in zip(hosts,items):
…..
Офлайн