Python中read,readline,readlines三者的区别

read,readline,readlines三者的区别

    • 文件准备
    • read
    • readline
    • readlines
    • 总结

As we all know,python中读取文件常用的三种方法:read(),readline(),readlines();在一些互联网大中厂的面试或笔试中存在着这样的考题,询问三者的区别。以前看书的时候觉得这东西很简单,一眼扫过,根本没有用心去记它,直到真正使用或者被询问的时候,发现自己并没有很好的掌握。话不多说,来一起看看详细的操作结果:

文件准备

首先生成一个txt文件“123.txt”,文件的具体内容为:
How are you?
I am fine, Thank you, And you?
I am fine, too.
Life is short,I love python.

read

read([size])方法从文件当前位置起读取size个字节,若无参数size,则表示读取至文件结束为止,它的范围为字符串对象:

with open("123.txt") as f:
	lines = f.read()
	print(type(lines))
	print(lines)
f.close()

输出结果为:

#字符串类型
How are you?
I am fine, Thank you, And you?
I am fine, too.
Life is short,I love python.
[Finished in 0.8s]

readline

readline()从字面意思可以看出,该命令每次读取一行,所以,读取时占用内存小,比较适合大文件,该方法返回一个字符串对象。

with open("123.txt") as f:
    try:
       while True:
           line = f.readline()
           if line:
              print(type(line))
              print("line= ",line)
           else:
              break
    finally:
       f.close()

输出结果为:

#字符串类型
line= How are you?

line= I am fine, Thank you, And you?

line= I am fine, too.

line= Life is short,I love python.
[Finished in 0.8s]

readlines

readlines()从字面意思来看,多加了一个“s”,考虑到英语中复数的概念,该方法读取整个文件所有行,保存在一个列表(list)变量中,每行作为一个元素,但读取大文件会比较占内存。

with open("123.txt") as f:
    try:
       while True:
           lines = f.readlines()
           print("type(lines)=",type(lines))  #查看lines的类型
           for line in lines:
              print("type(line)=",type(line))  #查看lines中line的类型
              print("line= ",line)
           else:
              break
    finally:
       f.close()

输出结果为:

type(lines)= #列表类型
type(line)= #字符串类型
line= How are you?
type(line)=
line= I am fine, Thank you, And you?
type(line)=
line= I am fine, too.
type(line)=
line= Life is short,I love python.
[Finished in 0.4s]

总结

对于read():
1、读取整个文件,将文件内容放到一个字符串变量中
2、如果文件大于可用内存,不可使用这种处理
对于readline():
1、readline()每次读取一行,相对于readlines()要慢得多
2、readline()返回的是一个字符串对象,并保存当前行的内容
对于readlines():
1、一次性读取整个文件,返回一个包含所有行的列表
2、当文件大小大于可用内存时,不宜使用。

你可能感兴趣的:(Python中read,readline,readlines三者的区别)