Я хотел бы прочитать не более 20 строк из файла CSV:Python: StopIteration исключение и списочные
rows = [csvreader.next() for i in range(20)]
отлично работает, если файл имеет 20 или более строк, терпит неудачу с исключением StopIteration иначе.
Есть ли элегантный способ справиться с итератором, который может вызвать исключение StopIteration в понимании списка или использовать регулярный цикл?
Thanks Ayman. Похоже, что переосмысления списков необходимо обновить, чтобы справиться с StopIteration, нет? Он кажется, что «для» уже обновлен, чтобы справиться с ним (он прекращает итерацию, когда сталкивается с этим исключением, неявно ловя его), и я не вижу очевидной причины, по которой переписные листы не будут делать то же самое. – Parand
для улавливания StopIteration относительно его итерации, а не других подобных объектов в его наборе. Так, например с = ITER (диапазон (5)) для г в диапазоне (10): \t печати I, c.next() поднимет StopIteration исключение относительно С. – Mapio
Цикл for НЕ НЕЯТНО улавливает StopIteration. Он только улавливает его, если его выбрасывает следующий метод итератора, а не если он забрасывается в тело цикла. В вашем вопросе csvreader.next() аналогичен телу цикла. – Miles