对于第一个问题,可以重试多次。保留一个错误计数器,包装整个
try/except
在一个循环中,当您得到一个异常时,检查错误计数器,如果它小于(比如)5,则继续循环,否则会像您已经做的那样引发错误。
error_count = 0
while True:
try:
if cat is False:
child.expect('.#')
child.sendline('sh mac address-table | no-more')
else:
child.sendline('sh mac address-table dynamic | i Gi')
child.expect('.#', timeout=3000)
break
except pexpect.TIMEOUT:
++error_count
if error_count < 5:
continue
print child.before,child.after
child.close()
raise
对于第二个问题,是的,如果设备出现故障,只需将
return None
在“例外处理”中。但您还需要调整调用代码以正确处理
None
结果。