gpt4 book ai didi

python - 处理Python中的按键错误

转载 作者:行者123 更新时间:2023-12-02 20:44:45 24 4
gpt4 key购买 nike

下面的函数解析 cisco 命令输出,将输出存储在字典中并返回给定键的值。当字典包含输出时,此函数按预期工作。但是,如果该命令根本不返回任何输出,则字典的长度为 0,并且该函数将返回键错误。我已经使用了 exception KeyError: 但这似乎不起作用。

from qa.ssh import Ssh
import re

class crypto:
def __init__(self, username, ip, password, machinetype):
self.user_name = username
self.ip_address = ip
self.pass_word = password
self.machine_type = machinetype
self.router_ssh = Ssh(ip=self.ip_address,
user=self.user_name,
password=self.pass_word,
machine_type=self.machine_type
)

def session_status(self, interface):
command = 'show crypto session interface '+interface
result = self.router_ssh.cmd(command)
try:
resultDict = dict(map(str.strip, line.split(':', 1))
for line in result.split('\n') if ':' in line)
return resultDict
except KeyError:
return False

测试脚本:

obj = crypto('uname', 'ipaddr', 'password', 'router')
out = obj.session_status('tunnel0')
status = out['Peer']
print(status)

错误

Traceback (most recent call last):
File "./test_parser.py", line 16, in <module>
status = out['Peer']
KeyError: 'Peer'

最佳答案

KeyError 并未发生在函数 session_status 中,而是发生在您的脚本中的 status = out['Peer'] 中。因此,您在 session_status 中的 try and except 将不起作用。您应该为 status = out['Peer' 进行 try and except ]:

try:
status = out['Peer']
except KeyError:
print 'no Peer'

或:

status = out.get('Peer', None)

关于python - 处理Python中的按键错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44814651/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com