如果 python 中发生错误,则重新启动循环
Restarting a Loop if an error occurs in python
我在使用脚本时遇到了一些问题,该脚本产生的 IndexError 大约是 运行 的 1000 倍。
该脚本是我无法实际编辑的一款软件的附加组件,否则它会使我使用它的外部软件崩溃。
我从我自己的脚本中多次调用此脚本,有什么方法可以检测是否发生错误并循环返回以再次尝试 运行 调用脚本? (脚本有多个随机元素,这就是重复失败的风险很低的原因)。我更愿意进入附加脚本并手动编辑它,但这似乎不是一个选项
我有以下使用 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
这里有很多不妥之处,让我们回顾一下:
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
在pythonfor
循环中,它会自动递增。
你能……只是……不行吗?
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™:
The idea of goto in Python isn't new. There is another module that has been released as April Fool's joke in 2004.
如果您尝试使用最初作为愚人节玩笑发布的内容,可能更好的方法。
我在使用脚本时遇到了一些问题,该脚本产生的 IndexError 大约是 运行 的 1000 倍。
该脚本是我无法实际编辑的一款软件的附加组件,否则它会使我使用它的外部软件崩溃。
我从我自己的脚本中多次调用此脚本,有什么方法可以检测是否发生错误并循环返回以再次尝试 运行 调用脚本? (脚本有多个随机元素,这就是重复失败的风险很低的原因)。我更愿意进入附加脚本并手动编辑它,但这似乎不是一个选项
我有以下使用 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
这里有很多不妥之处,让我们回顾一下:
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
在pythonfor
循环中,它会自动递增。
你能……只是……不行吗?
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™:
The idea of goto in Python isn't new. There is another module that has been released as April Fool's joke in 2004.
如果您尝试使用最初作为愚人节玩笑发布的内容,可能更好的方法。