In Python, you must open files before you can read data from the file and write new data into the file. Python’s
close() method closes an open file. You can call the
close() method multiple times. However, after closing the file, you cannot access its data anymore. The
close() method takes no parameter and has no return value.
Here’s an example how to open and close a file in Python:
# Open a file f = open("file.txt", "w") print("Name of the file: ", f.name) "Name of the file: file.txt" # Close opened file f.close()
Why Close a File if Python Does it Automatically?
Although being good practice in Python, closing a file is not strictly necessary in all circumstances. For example, if your code terminates, the file is closed automatically by the Python runtime environment. Python will also close your file automatically if you reassign a referencing variable to another file.
However, if you don’t close a file in Python, you must know what you are doing. A lot can go wrong, too. For example, you may write data into the file and assume that the data is now in the file. However, Python may buffer the data in your machine’s memory for a while before actually flushing it into the file. So if you access and read the file content, you may see the unmodified data—even after you wrote new data into the file!
Therefore, it’s good practice to close the file as soon as you don’t need it anymore. By closing the file, Python will flush all data in the temporary memory buffer into the file on the disk. This ensures that all your system’s memory is released from handling the file you just closed.
Do I Need to Close a File When Using the “with” Keyword?
No, you don’t. If you use the
with keyword to open a file, Python automatically closes the file as soon as you leave the indented region (source). Here’s an example:
with open("hi.txt", "w") as f: f.write("hello world") """ File 'hi.txt' contains the following data: hello world """
So explicitly calling
f.close() is not necessary. It would be considered bad style and redundant code.
Where to go from here?
Understanding the basics in Python is vital for your success in the field of programming.
How to learn and master the basics? To help you accomplish this in the most exciting way, we’ve created the Finxter loop: a Python puzzle a day to learn, code, and play! 🐍💖