目录
一、打开文件
二、读取文件
1. 读取整个文件内容
2. 逐行读取文件内容
3. 读取多行内容
三、写入文件
1. 写入内容覆盖原有文件
2. 追加内容到文件末尾
四、关闭文件
五、文件指针操作
六、检查文件是否存在
在 Python 中,文件操作是一项基础且重要的功能,它主要包括打开、读写、关闭等操作。
一、打开文件
使用 open()
函数来打开文件,其基本语法如下:
f = open(file_path, mode, encoding=None)
-
f
:是open
函数的文件对象,拥有属性和方法。 -
file_path
:文件的路径,可以是相对路径或绝对路径。 -
mode
:打开文件的模式,常见的模式有:-
r
:以只读模式打开文件,文件指针会放在文件的开头,这是默认模式。 -
w
:以写入模式打开文件,如果文件已存在则会覆盖原有内容(原有内容会被删除),如果文件不存在则会创建新文件。 -
a
:以追加模式打开文件,文件指针会放在文件末尾,新的内容会被写到已有内容之后,如果文件不存在则会创建新文件。 -
x
:以独占创建模式打开文件,若文件已存在则会抛出FileExistsError
异常。 -
b
:以二进制模式打开文件。 -
t
:以文本模式打开文件。 -
+
:以读写模式打开文件。
-
-
encoding
:指定文件的编码方式,常见的有'utf-8'
、'gbk'
等。注意:encoding
的顺序不是第三位,所以不能用位置参数,要使用关键字参数直接指定。
二、读取文件
1. 读取整个文件内容
read()
方法: 文件对象.read(num)
,num表示要从文件中读取的数据长度(单位是字节),如果没有传入num,那么就表示读取文件中所有的数据。
try:f = open(file_path, 'r', encoding='UTF-8')content = f.read()print(content)finally:f.close()
在上述代码中,try...finally
语句确保了文件在使用完后会被关闭。不过,更推荐使用 with
语句,它能自动处理文件的关闭操作。
with open(file_path, 'r', encoding='UTF-8') as f:content = f.read()print(content)
2. 逐行读取文件内容
可以使用 readline()
方法逐行读取文件内容。
with open(file_path, 'r', encoding='UTF-8') as f:line = f.readline()while line:print(line.strip())line = f.readline()
也可以使用 for
循环来逐行读取文件内容,这种方式更加简洁。
with open(file_path, 'r', encoding='UTF-8') as f:for line in f:print(line.strip())
3. 读取多行内容
使用 readlines()
方法可以读取文件的所有行,并将其存储在一个列表中,其中每一行的数据为一个元素。
with open(file_path, 'r', encoding='UTF-8') as f:lines = f.readlines()for line in lines:print(line.strip())
其中 strip()
是 Python 字符串对象的一个内置方法,用于移除字符串开头和结尾的指定字符(默认是空白字符)。这里的指定字符是换行符,用于清除每行结尾处的换行符,它不会修改原始字符串,而是返回一个新的字符串。
三、写入文件
1. 写入内容覆盖原有文件
若以 w
模式打开文件,会覆盖文件中的原有内容。
直接调用 write()
方法,内容并未真正写入文件,而是会积攒在程序的内存中,称之为缓冲区,当调用 flush
的时候,内容才会真正写入文件。这样做是为了避免频繁的操作硬盘而导致效率下降。
f = open(file_path, 'w', encoding='UTF-8')f.write('Hello, World!\n')f.flush()
2. 追加内容到文件末尾
若以 a
模式打开文件,会将内容追加到文件末尾。
close()
方法内置了 flush
的功能,如果未调用 flush
,使用 close()
方法也可以将内容写入文件。
f = open(file_path, 'a', encoding='UTF-8')f.write('Hello, World!\n')f.close()
四、关闭文件
在完成文件操作后,需要关闭文件以释放系统资源。可以使用 close()
方法手动关闭文件,不过更推荐使用 with
语句,它会在代码块结束时自动关闭文件。
五、文件指针操作
可以使用 seek()
方法来移动文件指针的位置,其基本语法如下:
f.seek(offset, whence)
-
offset
:表示要移动的字节数。 -
whence
:指定从哪个位置开始移动,有三个可选值:-
0
:从文件开头开始移动,这是默认值。 -
1
:从当前位置开始移动。 -
2
:从文件末尾开始移动。
-
例如,将文件指针移动到文件开头:
with open(file_path, 'r', encoding='UTF-8') as f:f.seek(0) # 将文件指针移动到文件开头content = f.read()print(content)
六、检查文件是否存在
在进行文件操作之前,有时需要检查文件是否存在,可以使用 os.path.exists()
函数:
import osif os.path.exists(file_path):with open(file_path, 'r', encoding='UTF-8') as f:content = f.read()print(content)else:print('文件不存在')