Уведомления

Группа в Telegram: @pythonsu

#1 Июнь 2, 2017 08:11:24

komito
Зарегистрирован: 2017-06-02
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Отфарматировать вывод данных

Здравствуйте.
Я совсем новичек. Столкнулся с такой проблемой. Занимаюсь мониторингом серверов через 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']

Офлайн

#2 Июнь 2, 2017 08:26:05

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

Отфарматировать вывод данных

komito
Выходной файл должен иметь формат вида:
<имя принтра>,'\t',<счетчик принтера>
Этот формат назывался бы tab separated values если бы у вас не было символов <> и ,.
komito
То есть получаю вывод вида:…
Не удивительно, что запрограммировали то и получили. Поясните как вы хотели получить табуляции если вы их не печатаете?
Не требуется сочинять код для записи данных формате tsv:
 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)

Офлайн

#3 Июнь 2, 2017 09:14:01

komito
Зарегистрирован: 2017-06-02
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Отфарматировать вывод данных

Спасибо за ответ. Я некоректно описал задачу. Конечно мне не нужны символы <>. Мне просто нужен вывод вида:
имя принтера “табуляция” счетчик
Примерно так:
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
.. выводит столбец счетчиков нормально, а в качестве имени принтера у всех принтеров указывает последнее имя из списка принтеров.
Понимаю, что задаче скорее всего тривиальная, но как ее решить пока не знаю.

Офлайн

#4 Июнь 2, 2017 20:57:46

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

Отфарматировать вывод данных

А почему вы не пробовали?

  for host, item in zip(hosts,items):
      .....



Офлайн

#5 Июнь 5, 2017 07:02:39

komito
Зарегистрирован: 2017-06-02
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Отфарматировать вывод данных


doza_and
А почему вы не пробовали?

for host, item in zip(hosts,items):
…..


Спасибо, так все получилось.
Всем спасибо кто помог.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version