The with statement is very helpful to simplify working with exception handling.

For example when working with files, each time we open a file, we must remember to close it.

with makes this process transparent.

filename = '/Users/flavio/test.txt'

try:
file = open(filename, 'r')
print(content)
finally:
file.close()

You can write:

filename = '/Users/flavio/test.txt'

with open(filename, 'r') as file:
print(content)
In other words we have built-in implicit exception handling, as close() will be called automatically for us.
with is not just helpful to work with files. The above example is just meant to introduce its capabilities.