When working with files in Python, it's quite common to explicitly invoke the
close() method after processing the file. This might work fine in a lot of cases, however it's a common pitfall for beginners and developers coming from other languages.
Take for example the following code. If an exception is thrown before calling the
close() method, the file would remain open. In such a scenario, the code would stop executing before
close() is called, leaving the file open after the program crashes.
f = open('filename', 'w') f.write('Hello world!') f.close()
One way to mitigate this problem is to encapsulate the
write() call in a
try statement. This way, you can handle any exceptions and you can use
finally to ensure the file gets closed.
f = open('filename', 'w') try: f.write('Hello world!') finally: f.close()
Another option offered by Python is to use a
with statement which will ensure the file is closed when the code that uses it finishes running. This holds true even if an exception is thrown.
with open('filename', 'w') as f: f.write('Hello world!')
Writing short, efficient Python code is not always straightforward. Read how we optimize our list snippets to increase performance using a couple of simple tricks.
Mutable default arguments can trip up Python beginners and veterans alike. Here's a quick workaround to deal with them.
Learn two ways to format a string in Python with this quick tip.