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! 🐍💖
While working as a researcher in distributed systems, Dr. Christian Mayer found his love for teaching computer science students.
To help students reach higher levels of Python success, he founded the programming education website Finxter.com. He’s author of the popular programming book Python One-Liners (NoStarch 2020), coauthor of the Coffee Break Python series of self-published books, computer science enthusiast, freelancer, and owner of one of the top 10 largest Python blogs worldwide.
His passions are writing, reading, and coding. But his greatest passion is to serve aspiring coders through Finxter and help them to boost their skills. You can join his free email academy here.