Ваш текущий код пытается обработать исключение файла, который не был найден, или недостаточных прав доступа и т. Д., Чего бы не сделал блок with open(file) as f:
.
Также, в этом случае,блок finally:
поднял бы NameError
, поскольку f
не был бы определен.
В блоке with
- любое исключение (любого типа, может быть деление на ноль в вашемкод), который происходит внутри блока , все равно будет активирован, но даже если вы его не обработаете, ваш файл всегда будет закрыт должным образом.Это нечто совершенно другое.
То, что вы хотите, вероятно, это:
try:
with open("myfile.txt") as f:
do_Stuff() # even if this raises an exception, f will be closed.
except IOError:
print "Couldn't open/read myfile.txt"