在
Python
中打开文件后,除了可以向其写入或追加内容,还可以读取文件中的内容。读取文件内容主要分为以下几种情况:
1、读取指定字符
文件对象提供了read()
方法读取指定个数的字符,语法格式如下:
file.read([size])
参数说明:
file
:为打开的文件对象。size
:可选参数,用于指定从文件中读取的字符数(文本模式)或字节数(二进制模式),默认为 -1,如果省略,表示读取整个文件。
返回从字符串中读取的数据。
注意:在调用read()
方法读取文件内容的前提是在打开文件时,指定的打开模式为r(
只读)或者r+
(读写),否则,将抛出异常。
使用read(size)
方法读取文件时,是从文件的开头读取的。
2、读取一行
在使用read()
方法读取文件时,如果文件很大,一次读取全部内容到内存,容易造成内存不足,所以通常会采用逐行读取。文件对象提供了readline()
方法用于每次读取一行数据。readline()方法的基本语法格式如下:
file.readline()
其中,file
为打开的文件对象。同read()
方法一样,打开文件时,也需要指定打开模式为r(只读)或者r+(读写)。
3、读取全部行
读取全部行的作用同调用read()
方法时不指定size
类似,只不过读取全部行时,返回的是一个字符串列表,每个元素为文件的一行内容。读取全部行,使用的是文件对象的readlines()
方法,其语法格式如下:
file.readlines()
其中,file
为打开的文件对象。同read()
方法一样,打开文件时,也需要指定打开模式为r
(只读)或者r+
(读写)。
4、想一想
如果一个文件很大,比如5G
,试想应该怎样把文件的数据读取到内存然后进行处理呢?
调用read()
会一次性读取文件的全部内容,如果文件有10G
,内存就爆了,所以,要保险起见,可以反复调用read(size)
方法,每次最多读取size
个字节的内容。另外,调用readline()
可以每次读取一行内容,调用readlines()
一次读取所有内容并按行返回list
。因此,要根据需要决定怎么调用。
如果文件很小,read()
一次性读取最方便;如果不能确定文件大小,反复调用read(size)
比较保险;如果是配置文件,调用readlines()
最方便:
for line in f.readlines():
print(line.strip()) # 把末尾的'\n'删掉