A função open abre um objeto de arquivo, o uso é:
def open(file, mode='r', buffering=None, encoding=None, errors=None, newline=None, closefd=True):
Ao abrir um arquivo que não existe, será reportado um erro de IO, mas após a utilização do arquivo é necessário chamar o método close(), caso contrário os recursos do sistema operacional serão ocupados. Às vezes, quando ocorre um erro de arquivo, o método close () não será executado, portanto, precisa ser resolvido com try-final, o que é problemático.
with open chamará automaticamente o método close (), nenhuma chamada humana é necessária e uma mensagem de erro será fornecida.