使用上下文管理器安全地打开文件

已完成

Tip

有关更多详细信息,请参阅 “文本和图像 ”选项卡!

若要在Python中使用文件,首先需要打开它。 打开文件可提供可从中读取或写入的文件对象。 完成后,需要关闭该文件,以便操作系统释放其占用的资源,并保存所有待写入的数据。

忘记关闭文件的问题

您可以使用 open() 打开文件,并使用 .close() 将其关闭:

file = open("notes.txt", "r")
contents = file.read()
print(contents)
file.close()

问题是,如果在 open() 之后但在 .close() 之前发生错误,文件将一直处于打开状态——这可能导致数据丢失、文件被锁定或资源泄漏。

使用with语句

用于操作文件的更安全、更符合 Python 风格的方式是使用 with 语句。 它使用称为 上下文管理器 的功能,该功能会在块完成时自动关闭文件,即使发生错误也是如此。

with open("notes.txt", "r") as file:
    contents = file.read()
    print(contents)
# File is automatically closed here

后面的 as 一切都是你为块内的文件对象提供的名称。 阻止结束后,会自动为您关闭文件。

文件模式

第二个参数open()是模式,它告知Python计划对文件执行的操作:

模式 Meaning
"r" 读取(默认) 该文件必须已存在。
"w" 写。 创建新文件或覆盖现有文件。
"a" 追加。 追加到文件末尾;如果文件不存在,则创建该文件。
"r+" 读取和写入。

选择与要执行的操作匹配的模式 - 使用错误模式是意外擦除文件的常见原因。

更安全的默认值

在本模块的剩余部分中,始终使用 with 打开文件。 这是最安全的模式,几乎每一个真实的Python代码库中都会看到。