que me gustaría leer como máximo 20 líneas de un archivo csv:Python: StopIteration de excepción y las listas por comprensión
rows = [csvreader.next() for i in range(20)]
funciona bien si el archivo tiene 20 o más filas, falla con una excepción StopIteration lo contrario.
¿Existe una forma elegante de tratar con un iterador que podría lanzar una excepción StopIteration en una lista de comprensión o debería usar un ciclo for para regular?
Gracias Ayman. Parece que las listas de comprensión deben actualizarse para tratar con StopIteration, ¿no? Parece que "para" ya se ha actualizado para tratarlo (deja de iterar cuando encuentra la excepción, atrapándolo implícitamente), y no veo una razón obvia para que las listas de comprensión no hagan lo mismo. – Parand
para captura la StopIteration relativa a su iterable, no a otros objetos de este tipo en su suite. Por ejemplo c = iter (intervalo (5)) para i en el rango de (10): \t impresión i, c.next() elevará la excepción StopIteration relación a c. – Mapio
Un ciclo for NO captura implícitamente StopIteration. Solo lo atrapa si es lanzado por el siguiente método del iterador, no si es arrojado al cuerpo del bucle. En su pregunta, csvreader.next() es análogo al cuerpo del bucle. – Miles