Python 文件操作:打开与关闭
在 Python 中,对文件进行操作,首先需要打开文件,完成操作后需要关闭文件。本文将详细介绍如何使用 open()
函数打开文件,以及如何安全地关闭文件,保证数据完整性。
使用 open()
函数打开文件
Python 提供了一个内置函数 open(file_name, mode='r', encoding=None)
来打开文件。这个函数会返回一个文件对象,通过这个对象可以对文件进行各种操作。
参数详解:
file_name
(必需参数):- 指定要打开的文件的路径。
- 可以是绝对路径,也可以是相对路径。
- 相对路径: 相对于当前 Python 脚本所在目录的路径。
'my_file.txt'
:表示当前目录下名为my_file.txt
的文件。'../data/my_file.txt'
:表示当前目录的上一级目录的data
文件夹下的my_file.txt
文件。
- 绝对路径: 文件在计算机中的完整路径。
- 在 Windows 系统中,例如:
'C:\Users\YourName\Documents\my_file.txt'
- 在 macOS 或 Linux 系统中,例如:
'/Users/YourName/Documents/my_file.txt'
- 在 Windows 系统中,例如:
- 相对路径: 相对于当前 Python 脚本所在目录的路径。
注意: 推荐使用原始字符串来表示 Windows 下的绝对路径,例如:
r'C:\Users\YourName\Documents\my_file.txt'
, 避免反斜杠被解释为转义字符。python# 示例:使用绝对路径打开文件 file_path = r'C:\Users\YourName\Documents\my_file.txt' # Windows 示例,请替换为你的实际路径 try: f = open(file_path, 'r') print("文件打开成功!") f.close() except FileNotFoundError: print("文件不存在!")
mode
(可选参数, 默认为'r'
):指定文件的打开模式,决定了你对文件的操作权限(读、写、追加等)。
以下是常用的文件打开模式:
模式 描述 'r'
只读模式 (read):打开文件以供读取。这是默认模式。 'w'
写入模式 (write):打开文件以供写入。如果文件存在,则清空文件内容;如果文件不存在,则创建新文件。 'x'
独占创建模式 (exclusive creation):打开文件以供写入。但如果文件已存在,则会抛出 FileExistsError
异常。'a'
追加模式 (append):打开文件以供写入。任何新写入的数据都会被添加到文件末尾。如果文件不存在,则创建新文件。 'b'
二进制模式 (binary):以二进制格式打开文件。用于处理非文本文件,如图片、音频等。 't'
文本模式 (text):以文本模式打开文件。这是默认模式。 '+'
更新模式 (update):可以与 'r'
、'w'
、'a'
结合使用,实现读写操作。例如:'r+'
(读写)、'w+'
(写读)、'a+'
(追加读)。注意:使用w+
时会清空文件内容。'r+'
读写模式 (read and write):打开文件进行读写操作。文件必须存在,否则报错。 写入的数据会覆盖原有数据,除非使用 seek()
方法移动文件指针。'w+'
写读模式 (write and read):打开文件进行读写操作。如果文件存在,则清空文件内容;如果文件不存在,则创建新文件。 写入的数据可以被读取。 'a+'
追加读模式 (append and read):打开文件进行读写操作。所有写入的数据都会被添加到文件末尾。如果文件不存在,则创建新文件。 可以读取文件中的内容。 'rb'
二进制只读模式:以二进制格式打开文件,只能读取文件内容。 'wb'
二进制写入模式:以二进制格式打开文件,只能写入文件内容。如果文件存在,则清空文件内容;如果文件不存在,则创建新文件。 'ab'
二进制追加模式:以二进制格式打开文件,只能在文件末尾追加内容。如果文件不存在,则创建新文件。 'r+b'
二进制读写模式:以二进制格式打开文件,可以读取和修改文件内容。文件必须存在,否则报错。 'w+b'
二进制写读模式:以二进制格式打开文件,可以读取和修改文件内容。如果文件存在,则清空文件内容;如果文件不存在,则创建新文件。 'a+b'
二进制追加读模式:以二进制格式打开文件,可以读取文件内容,并且只能在文件末尾追加内容。如果文件不存在,则创建新文件。
encoding
(可选参数, 推荐指定):- 指定文件的字符编码格式。
- 常用的编码格式包括
'utf-8'
、'gbk'
、'ascii'
等。 - 强烈建议 在打开文本文件时指定
encoding
参数,以避免因编码问题导致乱码。 - 如果未指定,则使用系统默认编码。在不同操作系统上,默认编码可能不同。
示例:
python
# 以只读模式打开一个 UTF-8 编码的文本文件
f = open('my_file.txt', 'r', encoding='utf-8')
# 以写入模式打开一个 GBK 编码的文本文件,如果文件存在则清空内容
f = open('my_file.txt', 'w', encoding='gbk')
# 以二进制追加模式打开一个文件
f = open('my_image.png', 'ab')
关闭文件
完成文件操作后,务必关闭文件,释放系统资源。有两种方法可以关闭文件:
使用
close()
方法:pythonf = open('my_file.txt', 'r', encoding='utf-8') # ... 进行文件操作 ... f.close() # 关闭文件
注意: 如果在文件操作过程中发生异常,可能会导致
close()
方法没有被调用,从而导致文件没有被正确关闭。使用
with
语句 (推荐):with
语句可以确保文件在使用完毕后自动关闭,即使发生异常也能保证。这是一种更安全、更简洁的方式。pythonwith open('my_file.txt', 'r', encoding='utf-8') as f: # ... 进行文件操作 ... # 文件在此处自动关闭
当
with
语句块执行完毕后,文件会自动关闭,无需显式调用close()
方法。
- 使用
open()
函数打开文件,需要指定文件名和打开模式。 - 为了避免乱码问题,建议指定
encoding
参数。 - 使用
with
语句可以确保文件在使用完毕后自动关闭,是推荐的文件操作方式。 - 良好的文件操作习惯可以避免资源泄露和数据丢失。