本文将从以下几个方面对Python读取文件做详细的阐述:文件打开与关闭、读取文件内容、写入文件、常用的文件读写模式、文件对象的方法等。通过本文的学习,读者将深入理解Python读取文件的方法,进而运用到实际的开发中。
一、文件打开与关闭
在Python中,要想读取或写入文件,必须先将文件打开。文件打开的语法如下:
file = open(file_name [, access_mode][, buffering])
其中,参数说明如下:
- file_name:文件名字,可以包含路径。
- access_mode:文件打开模式,可选,有以下几种方式:
模式 | 描述 |
---|---|
r | 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。 |
rb | 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。 |
r+ | 打开一个文件用于读写。文件指针将会放在文件的开头。 |
w | 打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即会覆盖之前的内容。如果该文件不存在,创建新文件。 |
wb | 以二进制格式打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即会覆盖之前的内容。如果该文件不存在,创建新文件。 |
w+ | 打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即会覆盖之前的内容。如果该文件不存在,创建新文件。 |
a | 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。即新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。 |
ab | 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。即新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。 |
a+ | 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。 |
- buffering:缓冲大小,可选,如果buffering的值被设为0,就不会有缓冲;如果buffering的值被设为1,访问文件时会寻找缓冲,如果没有缓冲,就会创建一个缓冲;如果buffering的值大于1,则它指示了缓冲区的大小,缓冲区中的数据被写满或读满后,才会被操作系统提取。
文件打开后,操作完成之后务必关闭文件,以释放资源。文件关闭的语法如下:
file.close()
示例代码如下:
# 打开一个文件 file = open("file.txt", "r") # 对文件进行操作 # 关闭文件 file.close()
二、读取文件内容
在Python中,可以使用以下几种方式来读取文件的内容。
1、read()方法
read()方法用于读取文本文件中的内容,并返回字符串形式的文件内容。语法如下:
file.read([size])
其中,参数size是可选的,代表读取的字符数。如果没有指定size,则会读取全部文件内容。
示例代码如下:
file = open("file.txt", "r") content = file.read() print(content) file.close()
2、readline()方法
readline()方法用于一次读取一行。语法如下:
file.readline()
示例代码如下:
file = open("file.txt", "r") while True: line = file.readline() if not line: break print(line) file.close()
3、readlines()方法
readlines()方法用于读取所有行,并以列表形式返回文件内容。语法如下:
file.readlines()
示例代码如下:
file = open("file.txt", "r") lines = file.readlines() for line in lines: print(line) file.close()
三、写入文件
在Python中,要向文件写入内容,可以使用以下方式。
1、write()方法
write()方法用于向文件中写入指定字符串。语法如下:
file.write(str)
其中,参数str是要写入文件的内容。
示例代码如下:
file = open("file.txt", "w") file.write("Hello, world!") file.close()
2、writelines()方法
writelines()方法用于向文件中写入多行内容。语法如下:
file.writelines(sequence)
其中,参数sequence是要写入文件的内容列表。
示例代码如下:
file = open("file.txt", "w") lines = ["Line 1n", "Line 2n", "Line 3n"] file.writelines(lines) file.close()
四、常用的文件读写模式
Python提供了以下几种文件读写模式:
- r:只读模式,文件指针放在文件开头。
- r+:读写模式,文件指针放在文件开头。
- w:只写模式,文件指针放在文件开头,会覆盖文件内容,如果文件不存在则创建新文件。
- w+:读写模式,文件指针放在文件开头,会覆盖文件内容,如果文件不存在则创建新文件。
- a:只写模式,文件指针放在文件结尾,追加数据。
- a+:读写模式,文件指针放在文件结尾,追加数据。
- b:二进制模式。
- t:文本模式。
五、文件对象的方法
在Python中,文件对象还有以下几个方法可供使用。
1、tell()方法
tell()方法用于返回文件的当前位置,即文件指针的位置。语法如下:
file.tell()
2、seek()方法
seek()方法用于移动文件指针到指定位置。语法如下:
file.seek(offset[, whence])
其中,参数offset是指要移动的字符数,whence参数可选,默认值为0,表示从文件开头计算。它有以下三种取值:
- 0:从文件开头开始计算
- 1:从当前位置开始计算
- 2:从文件结尾开始计算
示例代码如下:
file = open("file.txt", "r") file.seek(5) content = file.read() print(content) file.close()
3、truncate()方法
truncate()方法用于截断文件到指定长度。语法如下:
file.truncate([size])
其中,参数size是要截断的长度,如果不指定,则截断到当前位置。注意,如果文件已经是要截断的长度,则truncate()方法不会产生任何效果。
示例代码如下:
file = open("file.txt", "w") file.write("Hello, world!") file.truncate(5) file.close()
4、flush()方法
flush()方法用于刷新文件缓冲区,即将缓冲区的内容立即写入文件,而不是等到缓冲区满了再写入。语法如下:
file.flush()
六、完整代码示例
下面是一个读写文件的完整示例代码:
# 打开文件 file = open("file.txt", "w+") # 写入文件 file.write("Hello, world!") # 移动指针 file.seek(0) # 读取文件 content = file.read() print(content) # 关闭文件 file.close()
读写文件是Python每个程序员必学的基础操作,希望通过本文的学习,读者能够掌握Python读写文件的方法,并在实际开发中灵活运用。