所以,我对"尝试";并且:除了";代码行,我不确定我是否做得正确,但这就是我的位置。
try:
code a
#
except Exception:
code b
#
except:
code c
所以,我想做的是让浏览器尝试";代码a";,并且如果";代码a";未找到,则尝试";代码b";。如果有更简单的方法,请告诉我"代码c";是在它找到"或"之后我要运行的最后一行代码;代码a";或";代码b";。两个";代码a";以及";代码b";其中有browser.refresh((,我希望它继续刷新页面,直到";代码a";或";代码b";找到它要找的东西。但是,当它没有找到它要查找的内容时,它刷新页面,但说";进程结束,退出代码为0";并且不刷新页面并重新启动脚本。它应该搜索页面,如果没有找到它要查找的内容,则刷新页面并重试,直到找到为止,然后继续"搜索";代码c";。我也尝试过";最后";,而是继续到"0";最后";在";代码a";以及";代码b";找到它要找的东西。
我也试过这个。
try:
code a
except Exception:
pass
#
try:
code b
except Exception:
pass
#
try:
code c
except Exception:
pass
这两种方法都不起作用,我也不起作用;代码a";或";代码b";。
任何帮助都会很棒!
提前感谢!
这将继续尝试执行code_a和code_b,直到其中一个运行无错误,然后退出主循环并运行code_c。
found_code = False
while not found_code:
try:
code_a
found_code=True
except Exception:
pass
try:
code_b
found_code=True
except Exception:
pass
code_c
这个问题已经得到了回答,但我相信break语句比while循环使用布尔变量更容易。此外,每次循环运行时,另一个答案将同时运行代码a和代码b,而此代码运行问题中要求的a或b。
while True:
try:
code a
break
except:
try:
code b
break
except:
pass
code c
可以从:contexlib
使用:suppress
。
试试类似的东西:
from contextlib import suppress
def do_dangerous(code_to_run):
with suppress(Exception):
code_to_run()
return True
return False
flag: bool = do_dangerous(code1) or do_dangerous(code2)
if flag:
code3()
甚至更短:
if do_dangerous(code1) or do_dangerous(code2):
code3()