上下文管理器和 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 中添加了此功能。