Мне нужно удалить файл, если не все операции, которые должны быть выполнены с ним, были успешными (то есть, если возникло исключение).Это может быть так же просто, как использовать , за исключением: , удаления файла и повторного вызова исключения, но в этом случае исходное исключение будет потеряно, если файл не может быть удален в , кроме предложение по любой загадочной причине.
Лучшее, что я смог придумать, это:
try:
file_path = "whatever.jpg"
# do stuff with file
except:
exception_raised = True
raise
finally:
try:
if exception_raised:
os.unlink(file_path)
except:
pass
return file_path # everything OK
Кто-нибудь знает о лучшем, более питонском подходе?