使用上下文管理器安全地打开文件
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代码库中都会看到。