如何在Python中关闭已打开的文件?
Python 内置函数 `open()` 用于打开文件并返回文件对象。文件对象中的方法和属性可用于收集有关已打开文件的详细信息,也可用于修改该文件。
打开文件
此函数需要两个参数。首先是文件名和完整路径,其次是访问模式。此函数返回一个文件对象。
语法
以下是打开文件的语法
open(filename, mode)
这里,**文件名**及其路径由字符串参数指定,**模式**参数用于确定文件将用于读写。
**注意**:如果文件和Python脚本不在同一目录中,则必须指定文件的完整路径。如果不提供模式,则默认访问模式为读取模式。
示例
以下是使用 **r+ 模式** 打开文件的示例:
# Opening a file file = open("file.txt", "r+") print ("Name of the file: ", file.name) print ("Opening mode : ", file.mode)
输出
以下是上述代码的输出:
Name of the file: file.txt Opening mode : r+
打开文件的各种模式
- **ab** - 以二进制格式打开文件,其他方面与 `a` 模式相同。
- **ab+** - 以二进制格式打开文件,其他方面与 `a+` 模式相同。
- **a+** - 允许读取和追加到文件。如果文件已存在,则文件指针位于文件末尾;否则,将创建一个新文件进行读写。
- **a** - 以追加模式打开文件。如果文件存在,则指针位于文件末尾;否则,将创建一个新文件进行写入。
- **wb** - 与 `w` 模式类似,但以二进制格式打开文件。
- **wb+** - 与 `w+` 模式类似,但以二进制格式打开文件。
- **w+** - 以读写模式打开文件;其余与 `w` 模式类似。
- **w** - 以写入模式打开文件。这将替换现有文件,如果现有文件不存在则创建一个新文件。
- **rb** - 以二进制模式打开文件,其他方面与 `r` 模式相同。
- **rb+** - 与 `r+` 模式类似,只是以二进制模式打开文件。
- **r+** - 以读写模式打开文件。指针位于文件的开头。
- **r** - 以只读模式打开文件。指针位于文件的开头。这也是默认模式。
- **x** - 用于独占创建文件。如果文件已存在,则操作失败。
- **t** - 以文本模式打开(默认)。
- **b** - 以二进制模式打开。
- **+** - 以更新模式打开文件(读写)。
Learn Python in-depth with real-world projects through our Python certification course. Enroll and become a certified expert to boost your career.
关闭文件
可以直接使用文件对象调用 `close()` 函数,因为它不需要任何参数。可以多次调用它,但是如果对已关闭的文件执行任何操作,则会引发 "ValueError" 异常。
示例
以下是关闭文件的示例:
# Opening a file file = open("file.txt", "r+") # closing the file file.close()
**注意**:务必记住在完成任务后始终显式关闭每个打开的文件,并且不需要保持打开状态,因为程序一次只能打开一定数量的文件。如果超过此限制,则无法安全恢复,因此软件可能会崩溃。
`close()` 不是完全安全的。如果我们在尝试对文件执行某些操作时抛出异常,则该函数会在不关闭文件的情况下终止。最好使用 `try...finally` 块。
示例
以下示例说明,即使生成异常并中断程序执行,也可以保证文件将被正确关闭:
try: file = open("file.txt", "r+") finally: file.close()
**注意**:在Python中处理文件操作最安全的方法是使用 "with" 语句,因为它确保在内部块退出时关闭文件。
示例
在下面的示例中,不必显式调用 `close()` 方法。该过程是内部的:
with open("file.txt", "r+") as file: # perform some file operations