C'è un modo per implementare qualcosa di simile:Si può "riavviare" l'iterazione corrente di un loop Python?
for row in rows:
try:
something
except:
restart iteration
C'è un modo per implementare qualcosa di simile:Si può "riavviare" l'iterazione corrente di un loop Python?
for row in rows:
try:
something
except:
restart iteration
Si potrebbe mettere il blocco try/except
in un altro ciclo e poi rompersi quando ci riesce:
for row in rows:
while True:
try:
something
break
except Exception: # Try to catch something more specific
pass
non il "pass" fa sì che il ciclo for continui? – user3063864
No, perché è all'interno del ciclo while. Il codice cadrà semplicemente alla fine del blocco 'except' e tornerà all'inizio del ciclo' while'. Nota che potresti anche usare 'continue' se vuoi. – iCodez
Quindi metterei questo prima del vero ciclo del mio ciclo for, e funziona semplicemente fino a quando "qualcosa" non viene confermato, e quindi esegue il "qualcosa" nel mio ciclo for? – user3063864
Anche se io non consiglierei che, l'unico modo per farlo è quello di fare un po '(True) loop fino a quando non ottiene something
Fatto.
Tenere presente la possibilità di un ciclo infinito.
for row in rows:
try:
something
except:
flag = False
while not flag:
try:
something
flag = True
except:
pass
grazie, questo è davvero utile – Jake
Si potrebbe fare le righe un iteratore e solo anticipo quando non v'è alcun errore.
it = iter(rows)
row = next(it,"")
while row:
try:
something
row = next(it,"")
except:
continue
Una nota a parte, se non siete già mi sorprendevo di errore specifici/errori nel eccezione, non si vuole prendere tutto.
Se avete Falsey valori è possibile utilizzare oggetti come valore di default:
it = iter(rows)
row, at_end = next(it,""), object()
while row is not at_end:
try:
something
row = next(it, at_end)
except:
continue
Mi sembra più chiaro di "while True:" risponde – kratenko
avere il vostro ciclo for all'interno di un infinito ciclo while. Controllare la condizione in cui si desidera riavviare il ciclo for con una condizione if else e interrompere il loop interno. avere una condizione if all'interno del ciclo while che è fuori dal ciclo for per interrompere il ciclo while. Ti piace questa:
while True:
for row in rows:
if(condition)
.....
if(condition)
break
if(condition)
break
È possibile passare alla successiva * * iterazione, ma non si può * * retry l'iterazione corrente. – CoryKramer
Sì, si chiama loop interno. – Shashank
intendi come 'redo' in perl? Penso che non ci sia nulla di simile in Python. – kratenko