Possible Duplicate:
Using python “with” statement with try-except block
I'm using open
to open a file in Python. I encapsulate the file handling in a with
statement as such:
with open(path, 'r') as f:
# do something with f
# this part might throw an exception
This way I am sure my file is closed, even though an exception is thrown.
However, I would like to handle the case where opening the file fails (an OSError
is thrown).
One way to do this would be put the whole with
block in a try:
. This works as long as the file handling code does not throw a OSError.
It could look something like :
try:
with open(path, 'rb') as f:
except:
#error handling
# Do something with the file
This of course does not work and is really ugly. Is there a smart way of doing this ?
Thanks
PS: I'm using python 3.3