I’m currently writing a small script for use on one of our servers using Python. The server only has Python 2.4.4 installed.
I didn’t start using Python until 2.5 was out, so I’m used to the form:
with open('file.txt', 'r') as f:
# do stuff with f
However, there is no with statement before 2.5, and I’m having trouble finding examples about the proper way to clean up a file object manually.
What’s the best practice for disposing of file objects safely when using old versions of python?
See docs.python.org:
Hence use
close()elegantly withtry/finally:This ensures that even if
# do stuff with fraises an exception,fwill still be closed properly.Note that
openshould appear outside of thetry. Ifopenitself raises an exception, the file wasn’t opened and does not need to be closed. Also, ifopenraises an exception its result is not assigned tofand it is an error to callf.close().