- 零基础学Python(第2版)
- 黄传禄 张克强 赵越
- 1087字
- 2025-03-22 17:27:12
7.1.2 文件的读取
文件的读取有多种方法,可以使用readline()、readlines()或read()函数读取文件。下面将一一介绍这些函数读取文件的实现方法。
1.按行读取方式readline()
readline()每次读取文件中的一行,需要使用永真表达式循环读取文件。但当文件指针移动到文件的末尾时,依然使用readline()读取文件将出现错误。因此程序中需要添加1个判断语句,判断文件指针是否移动到文件的尾部,并且通过该语句中断循环。下面【例7-1】这段代码演示了readline()的使用。
【例7-1.py】
01 # 使用readline()读文件 02 f = open("hello.txt") 03 while True: 04 line = f.readline() 05 if line: 06 print (line) 07 else: 08 break 09 f.close()
【代码说明】
·第3行代码使用了“Ture”作为循环条件,构成1个永真循环。
·第4行代码调用readline(),读取hello.txt文件的每一行。每次循环依次输出如下结果。
hello world hello China
·第5行代码,判断变量line是否为真。如果为真,则输出当前行的内容;否则,退出循环。
如果把第4行代码改为如下语句,读取的方式略有不同,但读取的内容完全相同。
line = f.readline(2)
该行代码并不表示每行只读取2个字节的内容,而是指每行每次读2个字节,直到行的末尾。
2.多行读取方式readlines()
使用readlines()读取文件,需要通过循环访问readlines()返回列表中的元素。函数readlines()可一次性读取文件中多行数据。下面这段代码演示了readlines()读取文件的方法。
01 # 使用readlines()读文件 02 f = open('hello.txt') 03 lines = f.readlines() 04 for line in lines: # 一次读取多行内容 05 print (line) 06 f.close()
【代码说明】
·第3行代码调用readlines(),把文件hello.txt中所有的内容存储在列表lines中。
·第4行代码循环读取列表lines中的内容。
·第5行代码输出列表lines每个元素的内容,即文件hello.txt每行的内容。
·第6行代码手动关闭文件。
3.一次性读取方式read()
读取文件最简单的方法是使用read(),read()将从文件中一次性读出所有内容,并赋值给1个字符串变量。下面这段代码演示了read()读取文件的方法。
01 # 使用read()读文件 02 f = open("hello.txt") 03 context = f.read() 04 print (context) 05 f.close()
【代码说明】
·第3行代码调用read(),把文件hello.txt中所有的内容存储在变量context中。
·第4行代码输出所有文件内容。
可以通过控制read()参数的值,返回指定字节的内容。下面通过【例7-2】的代码实现。
【例7-2.py】
01 f = open("hello.txt") 02 context = f.read(5) # 读取文件前5个字节内容 03 print (context) 04 print (f.tell()) # 返回文件对象当前指针位置 05 context = f.read(5) # 继续读取5个字节内容 06 print (context) 07 print (f.tell()) # 输出文件当前指针位置 08 f.close()
【代码说明】
·第2行代码调用read(5),读取hello.txt文件中前5个字节的内容,并存储到变量context中。此时文件的指针移到第5个字节处。
·第3行代码输出变量context的结果,输出的结果为“hello”。
·第4行代码调用tell(),输出当前文件指针的位置:5。
·第5行代码再次调用read(5),读取第6个字节到第10个字节的内容。
·第6行代码输出结果为“worl”。
·第7行代码输出当前文件指针的位置:10。
注意 file对象内部将记录文件指针的位置,以便下次操作。只要file对象没有执行close()方法,文件指针就不会释放。