Пытаюсь понять как правильно обработать ошибки при чтении файла и собственно закрыть его.
Нужно открыть файл и если ошибка то программа завершает работу, если успешно то выполняет операции над файлом.
Гуглил на просторах интернета и нашел два вариант:
try:
file = open("config.json", "r")
config = json.load(file)
print(config)
except FileNotFoundError:
print(">>> Файл не найден!")
except PermissionError:
print(">>> Доступ запрещен!")
finally:
print(">>> Файл закрылся!")
file.close()
Но python ругается, что не видит file в finally (UnboundLocalError: cannot access local variable 'file' where it is not associated with a value)
Потом наткнулся на такой вариант:
try:
myfile = open("config.json", "r")
try:
print("Работа с файлом")
finally:
print("Файл закрылся")
myfile.close()
except Exception as ex:
print(ex)
Но и тут во втором try-finally код не выполняется в finally (в консоле не выводит print)
Нужно ли закрывать файл при исключениях и как это делать правильно?