CiscoConfigParser и функции

#python #function #ciscoconfparse

#python #функция #ciscoconfparse

Вопрос:

Я пытаюсь сделать код более чистым и более управляемым, и я хотел начать с чтения файла cisco. Однако, когда я пытаюсь поместить его в функцию, он не может выдать мне выходные данные. То же самое отлично работает из функции

Рабочая модель

 parse = CiscoConfParse("C:\python\mydata\TestConfigFile.txt")    
TCPSrv = parse.find_objects("servicestcpsdestinationseq")
UDPSrv = parse.find_objects("servicesudpsdestinationseq")
ObjectNetwork = parse.find_objects("^objectsnetworks")
ObjectGroupSrv = parse.find_objects("^object-groupsservice")
ObjectGroupNetwork = parse.find_objects("^object-groupsnetworks")
  

Это создает список для всего вышеперечисленного, подобный приведенному ниже

 TCPSrv = [<IOSCfgLine # 83 ' service tcp destination eq https' (parent is # 82)>,<IOSCfgLine # 97 ' service tcp destination eq www '(parent is # 102)>]
  

Но когда я помещаю это в функцию, это не работает. Это первый раз, когда я пытаюсь использовать функции, и я знаю, что делаю что-то неправильно.

Это мой код для функций

 def cisco(filename):
    parse = CiscoConfParse(filename)
    TCPSrv = parse.find_objects("servicestcpsdestinationseq")
    UDPSrv = parse.find_objects("servicesudpsdestinationseq")
    ObjectNetwork = parse.find_objects("^objectsnetworks")
    ObjectGroupSrv = parse.find_objects("^object-groupsservice")
    ObjectGroupNetwork = parse.find_objects("^object-groupsnetworks")
    return TCPSrv, UDPSrv, ObjectNetwork, ObjectGroupSrv, ObjectGroupNetwork


file = C:\python\mydata\TestConfigFile.txt


cisco(file)
  

Это не дает никакого результата.

 >>> TCPSrc
Traceback (most recent call last):
  File "<input>", line 1, in <module>
NameError: name 'TCPSrc' is not defined
  

Я также попытался представить это так ниже

 cisco("C:\python\mydata\TestConfigFile.txt")
  

Может кто-нибудь любезно помочь, что я делаю неправильно.

Ответ №1:

Это не дает никакого результата

>>> TCPSrc
Обратная трассировка (последний последний вызов):
 Файл "", строка 1, в 
Ошибка имени: имя 'TCPSrc' не определено

Вы ничему не присвоили возвращаемые значения. При вызове cisco() вам нужно присвоить возвращаемые значения чему-либо… пожалуйста, используйте:

 from ciscoconfparse import CiscoConfParse

def cisco(filename):
    parse = CiscoConfParse(filename)
    TCPSrv = parse.find_objects("servicestcpsdestinationseq")
    UDPSrv = parse.find_objects("servicesudpsdestinationseq")
    ObjectNetwork = parse.find_objects("^objectsnetworks")
    ObjectGroupSrv = parse.find_objects("^object-groupsservice")
    ObjectGroupNetwork = parse.find_objects("^object-groupsnetworks")
    return TCPSrv, UDPSrv, ObjectNetwork, ObjectGroupSrv, ObjectGroupNetwork

values = cisco("C:\python\mydata\TestConfigFile.txt")
TCPsrv = values[0]
UDPsrv = values[1]
# ... etc unpack the remaining values as illustrated above