[英]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.