with to open files¶
In Python 2.5, the
file class was equipped with special methods that are automatically called whenever a file is opened via a
with statement (e.g.
with open("file.txt", "r") as file). These special methods ensure that the file is properly and safely opened and closed.
The code below does not use
with to open a file. This code depends on the programmer remembering to manually close the file via
close() when finished. Even if the programmer remembers to call
close() the code is still dangerous, because if an exception occurs before the call to
close() will not be called and the memory issues can occur, or the file can be corrupted.
f = open("file.txt", "r") content = f.read() 1 / 0 # ZeroDivisionError # never executes, possible memory issues or file corruption f.close()
with to open a file¶
The modified code below is the safest way to open a file. The
file class has some special built-in methods called
__exit__() which are automatically called when the file is opened and closed, respectively. Python guarantees that these special methods are always called, even if an exception occurs.
with open("file.txt", "r") as f: content = f.read() # Python still executes f.close() even though an exception occurs 1 / 0