Python上下文管理器和with语句简介

示例

上下文管理器是在上下文(代码块)开始结束时收到通知的对象。您通常在该with语句中使用一个。它负责通知。

例如,文件对象是上下文管理器。当上下文结束时,文件对象自动关闭:

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

# open_file对象已自动关闭。

上面的示例通常通过使用as关键字进行简化:

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

# open_file对象已自动关闭。

任何结束执行该块的操作都会导致调用上下文管理器的exit方法。这包括异常,并且在错误导致您过早退出打开的文件或连接时很有用。在没有正确关闭文件/连接的情况下退出脚本是一个坏主意,可能会导致数据丢失或其他问题。通过使用上下文管理器,可以确保始终采取预防措施,以防止这种方式造成损坏或丢失。此功能是在Python 2.5中添加的。