1、read([size])
read([size]):
从文件当前位置起读取size个字节,若无参数,则默认读取整个文件。
返回值:一个str对象(将整个读取的字节拼接成一个字符串,包括换行符、制表符)。
with open(‘file.txt’, 'r', encoding='utf-8') as f:
lines = f.read()
print(lines)
上面代码读中lines
为字符串,有时我们需要的是将文件中每行的内容作为一个元素保存在列表中,这时可以使用字符串内置函数.splitlines()
,对字符串进行分割。
with open(‘file.txt’, 'r', encoding='utf-8') as f:
lines = f.read().splitelines()
print(lines)
2、readlines()
readlines():
读取整个文件并保存在一个列表中,文件中的每一行作为列表中的一个元素(包括‘\n’、‘\t’)。
返回值: list对象
由于读取文件时保留了每行结尾的换行符,可以使用strip()
函数来去除每个元素的开头和结尾的空格。
with open('file.txr', 'r',) as f:
lines = f.readlines()
lines = [line.strip() for line in lines if len(line.strip())]
print(lines)
3、readline([size])
readline():
每次从文件中读取一行包括'\n'
字符。如果size
指定了一个非负数的参数,则返回指定大小的字节数,包括 “\n” 字符。
with open(r'E:\文本分析\dataSet\12.text', 'r', encoding='utf-8') as f:
while True:
line = f.readline()
if line:
print(line)
else:
break
注意: 当文件过大时,采用read()
和readlines()
读取时会占用过多内存,甚至文件大于可用内存时,读取会出现异常。此时可使用readline()
来读取,但该方法读取文件时间要大于前两种。
文件读取的最优方法
with open('file.txt', 'r') as f:
for line in f:
do_things(f)
使用open()
函数创建的文件对象是一个迭代器,因此可以使用for
语句进行遍历,每次读取文件的一行(包括’\n’)。
这种方法是文本文件读取的最佳选择,它简单、且对任意大小的文件都有效,因为他不会一次性把整个文件都载入到内存中。