[英]Restarting a Loop if an error occurs in python
我在使用一个脚本时遇到了一些问题,该脚本在运行 1000 次时会产生大约 1 次的 IndexError。
该脚本是我无法实际编辑的软件的附加组件,否则它会使我使用它的外部软件崩溃。
我从我自己的脚本中多次调用此脚本,有什么方法可以检测是否发生错误并循环返回以尝试再次运行脚本? (脚本有多个随机元素,这就是重复失败的风险很低的原因)。 我更愿意将 go 添加到脚本中并手动编辑它,但这似乎不是一个选项
我有以下使用 PYPI goto 语句 ( https://pypi.org/project/goto-statement/ ) 并使用 except,但是错误似乎没有被识别,我得到了与没有goto 或 except 语句。
def function (stuff thats passed into the other script):
for i in range(5000):
print(i)
try:
runscript (info passed into script)
except IndexError:
print(i,'fails')
continue
这有很多问题,让 go 解决它:
from goto import with_goto
您应该避免使用goto
,因为它会导致奇怪的代码时间线,并使您的代码难以阅读或理解。
def function:
你忘了你的括号,它应该看起来像def function():
for i in range(5000):
将其替换为 while i < 5000
print(i,'fails')
如果您试图发出错误消息,请使用raise()
。
i=i+1
在 python for
循环中,它会自动递增。
你能……只是……不吗?
def func():
for i in range(5000):
try:
runscript
except IndexError:
return False
return True
while not func():
pass
这将运行您的runscript
直到它设法连续执行 5000 次运行脚本,但它没有任何奇怪的字节码操作。 还有其他方法:
successes = 0
while successes < 5000:
try:
runscript
successes += 1
except IndexError:
successes = 0
应该清楚,这是一个基于该页面底部引用的 Bad Idea™:
goto in Python 的想法并不新鲜。 还有一个模块是在 2004 年作为愚人节玩笑发布的。
如果您尝试使用最初作为愚人节玩笑发布的内容,可能有更好的方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.