#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