With statement in Python

In python the with keyword is used when working with unmanaged resources (like file streams). The with statement simplifies exception handling by encapsulating common preparation and cleanup tasks. This allows common try..except..finally usage patterns to be encapsulated for convenient reuse.
with expression [as variable]: with-block
It's handy when you have two related operations which you'd like to execute as a pair, with a block of code in between. The classic example is opening a file , manipulating the file, then closing it:
try: file_obj = open(my_file, 'w') file_obj.write("Halo") finally: file_obj.close()
Using with statement , to open a file, process its contents, and make sure to close it, you can simply do:
with open(my_file, 'w') as file_obj: file_obj.write("Halo")
The with statement clarifies code that previously would use try...finally blocks to ensure that clean-up code is executed. The advantage of using a with statement is that it is guaranteed to close the file no matter how the nested block exits. If the __enter__() method returns without an error, then __exit__() will always be called. Thus, if an error occurs during the assignment to the target list, it will be treated the same as an error occurring within the suite would be. If an exception occurs before the end of the block, it will close the file before the exception is caught by an outer exception handler. If the nested block were to contain a return statement, or a continue or break statement , the with statement would automatically close the file in those cases, too. Use with statement , when ever you acquire resources in your application that must be explicitly relinquished such as files, network connections, locks and the like.