Для первого вопроса, да, вы можете повторить несколько раз.Держите счетчик ошибок, оберните весь цикл 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
.