如果不是必须对其执行的所有操作都成功(也就是说,如果引发异常),我需要删除一个文件。它可以像使用except:一样简单,删除文件然后重新引发异常,但在这种情况下,如果由于任何神秘原因无法在except子句中删除文件,则原始异常将丢失。
我能想到的最好的是:
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
有人知道更好、更 Pythonic 的方法吗?