https://llego.dev/posts/practical-guide-using-with-statement-file-handling-python/