. чтоВообще игнорировать любые исключения - это очень плохая идея. Причин этому много даже за рамками тех, с которыми вы уже столкнулись.
Если вы немного почитаете про обраотку исключений, то увидите блоков except в этой конструкции может быть несколько и они фильтруют происходящие исключения в том порядке, в котором указаны.
В общем случае следует различать два вида исключений: штатные и нештатные.
Штатные - это те исключения о которых вы знаете, которые предусматриваете. В данном контексте это, например KeyboardInterrupt. Кроме того, вам нужно понимать какие ещё исключения порождает ваш код, какие из этих исключений нжно считать штатными, и поэтому как-то конерктно обрабатывать ил игнорировать, а какие считать нештатными.
Нештатные иключения игнорировать и гасить - плохая идея. Каждое нештатное (непредусмотренное) исключения должо вести к поадению программы с подробным тейсбэком, который показывает где и почему произошла ошибка. Поняв из-за чего произошлоа нештатная ошибка, вы сможете либо устранить ошибку в коде, которая к ней приводит, либо обработаете её особым образом на нужном уровне так, чтобы эта ошибка стала штатной.
Если ваш скрипт должен во что бы то ни стало работать и никогда не падать в продакшн-режиме, то можно поступить так:
По факту KeyboardInterrupt делайте её рерайз. Остальные ошибки подробно логируйте и двигайтесь дальше:
for item in items:
try:
...
except KeyboardInterrupt:
raise
except Exception as e:
with open('errors.log', 'a') as log:
log.write(f'{e}')
# сюда же можно вывести трейсбэк, но я бы воспользовался стандартным логированием, чтобы не изобратать велосипед, однако его конфигурирование выходит за рамки данного отета.