class File(): def __init__(self, filename, mode): self.filename = filename self.mode = mode def __enter__(self): self.open_file = open(self.filename, self.mode) return self.open_file def __exit__(self, *args): self.open_file.close()
__init__() method sets up the object, in this case setting up the file name and mode to open file.
__enter__() opens and returns the file and
__exit__() just closes it.
Using these magic methods (
__exit__) allows you to implement objects which can be used easily
with the with statement.
Use File class:
for _ in range(10000): with File('foo.txt', 'w') as f: f.write('foo')