Акт попытки открыть файл в Python может вызвать исключение. Если я открываю файл с помощью оператора with
, могу ли я уловить исключения, вызванные вызовом open
и связанным с ним вызовом __enter__
, не перехватывая исключения, вызванные кодом в блоке with
?Как я могу перехватывать исключения, вызванные `with open (filename)` в Python?
try:
with open("some_file.txt") as infile:
print("Pretend I have a bunch of lines here and don't want the `except` below to apply to them")
# ...a bunch more lines of code here...
except IOError as ioe:
print("Error opening the file:", ioe)
# ...do something smart here...
Этот вопрос отличается от this older one в том, что старший собирается писать менеджер контекста, а не с помощью знакомого with open
.
Вы действительно хотите, чтобы поймать исключения брошенный '__enter__', или вы хотите поймать исключения, вызванные самим вызовом' open'? – BrenBarn
@BrenBarn, хороший момент. Я не рассматривал их как разные, но, полагаю, они должны быть. Наверное, я хочу исключений из любого места, но меня больше беспокоит всякий фрагмент кода, создающий исключение, как «IOError». – kuzzooroo