26 Введение в контекстные менеджеры и оператор with

Менеджер контекста является объектом , который получает уведомление , когда контекст (блок кода) начинается и заканчивается. Вы обычно используете один с with заявлением. Он заботится об уведомлении.

Например, файловые объекты являются контекстными менеджерами. Когда контекст заканчивается, объект файла закрывается автоматически:

 open_file = open(filename)
with open_file:
    file_contents = open_file.read()

# the open_file object has automatically been closed.

 

В приведенном выше примере, как правило , упрощена, используя в as ключевого слова:

 with open(filename) as open_file:
    file_contents = open_file.read()

# the open_file object has automatically been closed.

 

Все, что завершает выполнение блока, вызывает метод exit менеджера контекста. Это включает исключения и может быть полезно, когда ошибка приводит к преждевременному выходу из открытого файла или соединения. Выход из сценария без надлежащего закрытия файлов / соединений - плохая идея, которая может привести к потере данных или другим проблемам. С помощью диспетчера контекста вы можете всегда принимать меры предосторожности, чтобы предотвратить повреждение или потерю таким образом. Эта функция была добавлена ​​в Python 2.5.