Gibt es eine Möglichkeit, so etwas zu implementieren:Können Sie die aktuelle Iteration einer Python-Schleife "neu starten"?
for row in rows:
try:
something
except:
restart iteration
Gibt es eine Möglichkeit, so etwas zu implementieren:Können Sie die aktuelle Iteration einer Python-Schleife "neu starten"?
for row in rows:
try:
something
except:
restart iteration
Sie könnten Ihren try/except
Block in einer anderen Schleife gesetzt und dann brechen, wenn es gelingt:
for row in rows:
while True:
try:
something
break
except Exception: # Try to catch something more specific
pass
würde nicht die "pass" die for loop weitermachen? – user3063864
Nein, weil es in der While-Schleife ist. Der Code wird einfach bis zum Ende des 'except'-Blocks fallen und zurück zum Anfang der' while'-Schleife. Beachten Sie, dass Sie auch 'continue' verwenden können, wenn Sie möchten. – iCodez
Also würde ich dies vor das eigentliche Fleisch meiner for-Schleife stellen, und es läuft einfach, bis "etwas" bestätigt wird, zu passieren, und dann läuft es das eigentliche "etwas" in meiner for-Schleife? – user3063864
Obwohl ich, dass der einzige Weg, dies nicht empfehlen würde, zu tun, ist eine While (True) Schleife zu machen, bis er something
Geschehen bekommt.
Bedenken Sie die Möglichkeit einer Endlosschleife.
for row in rows:
try:
something
except:
flag = False
while not flag:
try:
something
flag = True
except:
pass
danke, das ist wirklich hilfreich – Jake
Sie Zeilen ein Iterator und nur vorher machen könnten, wenn kein Fehler vorhanden ist.
it = iter(rows)
row = next(it,"")
while row:
try:
something
row = next(it,"")
except:
continue
Auf einer Seite beachten, wenn Sie nicht bereits sind, würde ich spezifische Fehler/Fehler in der Ausnahme, fangen Sie nicht wollen, alles zu fangen.
Wenn Sie Falsey Werten Sie Objekt als Standardwert verwenden:
it = iter(rows)
row, at_end = next(it,""), object()
while row is not at_end:
try:
something
row = next(it, at_end)
except:
continue
Dies scheint mir klarer zu sein als die 'while True:' Antworten – kratenko
Sie sind innerhalb einer unendlichen while-Schleife für Schleife. Überprüfen Sie die Bedingung, bei der Sie die for-Schleife mit einer if-else-Bedingung neu starten möchten, und brechen Sie die innere Schleife. habe eine if-Bedingung innerhalb der while-Schleife, die außerhalb der for-Schleife liegt, um die while-Schleife zu unterbrechen. So:
while True:
for row in rows:
if(condition)
.....
if(condition)
break
if(condition)
break
Sie können auf die * nächste * Iteration überspringen, aber man kann nicht * Wiederholungs * die aktuelle Iteration. – CoryKramer
Ja, es heißt eine innere Schleife. – Shashank
du meinst wie 'Redo' in Perl? Ich denke, es gibt keine solche Sache in Python. – kratenko