1

我正在尝试使代码更清晰,更易于管理,我想从阅读 cisco 文件开始。但是,当我尝试将其放入函数中时,它无法给我输出。同样的功能也可以完美地发挥作用

工作模式

parse = CiscoConfParse("C:\\python\\mydata\\TestConfigFile.txt")    
TCPSrv = parse.find_objects("service\stcp\sdestination\seq")
UDPSrv = parse.find_objects("service\sudp\sdestination\seq")
ObjectNetwork = parse.find_objects("^object\snetwork\s")
ObjectGroupSrv = parse.find_objects("^object-group\sservice")
ObjectGroupNetwork = parse.find_objects("^object-group\snetwork\s")

这将为上述所有内容创建一个列表,如下所示

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("service\stcp\sdestination\seq")
    UDPSrv = parse.find_objects("service\sudp\sdestination\seq")
    ObjectNetwork = parse.find_objects("^object\snetwork\s")
    ObjectGroupSrv = parse.find_objects("^object-group\sservice")
    ObjectGroupNetwork = parse.find_objects("^object-group\snetwork\s")
    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")

有人可以帮助我做错了什么。

4

1 回答 1

0

这没有给出任何输出

>>> TCPSrc
回溯(最近一次通话最后):
  文件“”,第 1 行,在
NameError:名称“TCPSrc”未定义

您还没有将返回值分配给任何东西。当您调用时cisco(),您需要将返回值分配给某些东西......请使用:

from ciscoconfparse import CiscoConfParse

def cisco(filename):
    parse = CiscoConfParse(filename)
    TCPSrv = parse.find_objects("service\stcp\sdestination\seq")
    UDPSrv = parse.find_objects("service\sudp\sdestination\seq")
    ObjectNetwork = parse.find_objects("^object\snetwork\s")
    ObjectGroupSrv = parse.find_objects("^object-group\sservice")
    ObjectGroupNetwork = parse.find_objects("^object-group\snetwork\s")
    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
于 2020-12-31T11:26:20.607 回答