Python中read()、readline()和readlines()三者间的区别和用法

在python中读取文件常用的三种方法:f.read(), f.readline(), f.readlines()

假设python.txt的内容如下所示:

Python
Hello
I am fine

1.read([size])方法

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

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

输出结果:

Python
Hello
I am fine
<class 'str'>

2. readline()方法

readline() 方法用于从文件读取整行,包括 “\n” 字符。如果指定了一个非负数的参数,则返回指定大小的字节数,包括 “\n” 字符。该方法每次读出一行内容,所以,读取时占用内存小,比较适合大文件,该方法返回一个字符串对象。

with open("python.txt") as f:
    line = f.readline()
    print(type(line))
    while line:
        print(line)
        line = f.readline()

输出结果:

<class 'str'>
Python

Hello

I am fine

3. readlines()方法

readlines() 方法用于读取所有行(直到结束符 EOF)并返回列表,该列表可以由 Python 的 for… in … 结构进行处理。如果碰到结束符 EOF 则返回空字符串。该方法读取整个文件所有行,保存在一个列表(list)变量中,每行作为一个元素,但读取大文件会比较占内存。

with open("python.txt") as f:
    lines = f.readlines()
    print(type(lines))
    for line in lines:
        print(line)

输出结果:

<class 'list'>
Python

Hello

I am fine

4. linecache模块

linecache.getlines(filename):指向一个文件,获取其所有行。返回的是一个列表,相当于是f.readlines()的返回,列表中每行内容也都是以\n结尾的。

linecache.getlilne(filename,lineno):指定一行返回。注意这个是LineNo而不是index,也就是说getline(filename,1)返回的是第一行而不是第二行。返回的行包含换行符,另外如果指定行不存在也不会报错而是返回空行。

linecache.updatecache(filename):当文件内容发生改变时,如果需要获得到最新的文件内容,那么需要调用这个方法。如果不调用,仍然使用在缓存中的老文件内容。类似的操作还可以是linecache.clearcache之后再getlines也行。

linecache.clearcache():清除当前的所有缓存

linecache.checkcache(filename):检查缓存的有效性,如果文件已经不存在,或者内容被改变,那么老内容的缓存会被清除。在很多其他类似的场景中这个方法似乎应该是自动被调用的,但是在linecache中这个方法是需要手动调用的。从某种意义上来说,这个方法相当于是updatecache和clearcache的智能结合

  • 4
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值