【Python|第38期】Python读取文件的三种方式

日期:2023年3月24日
作者:Commas
签名:(ง •_•)ง 积跬步以致千里,积小流以成江海……
注释:如果您觉得有所帮助,帮忙点个赞,也可以关注我,我们一起成长;如果有不对的地方,还望各位大佬不吝赐教,谢谢^ - ^
1.01365 = 37.7834;0.99365 = 0.0255
1.02365 = 1377.4083;0.98365 = 0.0006



在这里插入图片描述


一、前言

Python文本处理是经常碰到的一个问题,非常重要的,所以才决定重新写一期关于文件读取的文章。这里有3个Python读取文本文件内容的方法介绍给大家:

  • read()
  • readline()
  • readlines()

这三种方法各有利弊,下面逐一介绍其使用方法和利弊。

二、读取文件的三种方法

read()

该方法一次性读取整个文件的内容,并将内容保存在一个字符串对象中。因为是一次性读取,所以适用于文件较小的情况。这种方法返回的是一个字符串对象。

  • 优点:方便简单,一次性读取到一个大字符串中,速度快;
  • 缺点:文件过大的时候,占用内存也会很大,不适宜读取大文件;

示例:

# coding:utf-8

if __name__ == "__main__":
    # open
    f = open("example.txt",encoding='utf8')
    
    # read
    # f = open("example.txt",encoding='utf8')
    lines = f.read()
    print(lines)
    
    # close
    f.close()

也可以用with,如下:

# coding:utf-8

if __name__ == "__main__":
    
    with open("example.txt",encoding='utf8') as f:
        lines = f.read()
        print(lines)

输出:

Nothing could be more wonderful!
没有比这更让人高兴的了!

readline()

该方法每次读取一行内容,并返回一个字符串对象。由于是逐行读取,所以适用于大文件。

  • 优点:逐行读取,占用内存小,适合读取大文件;
  • 缺点:逐行读取,速度相对较慢;

示例:

# coding:utf-8

if __name__ == "__main__":
    # open
    f = open("example.txt",encoding='utf8')
    
    # read
    line = f.readline()
    while line:
        print(line,end="")
        line = f.readline()
    
    # close
    f.close()

也可以用with,如下:

# coding:utf-8

if __name__ == "__main__":
    
    with open("example.txt",encoding='utf8') as f:
        line = f.readline()
        while line:
            print(line,end="")
            line = f.readline()

输出:

Nothing could be more wonderful!
没有比这更让人高兴的了!

readlines()

该方法读取整个文件的所有行,并将每行内容保存在一个列表(list)变量中。由于是一次性读取整个文件,所以适用于文件较小的情况。

  • 优点:一次性读取文本内容,速度较快;
  • 缺点:文件过大的时候,占用内存也会很大,不适宜读取大文件;

示例:

# coding:utf-8

if __name__ == "__main__":
    # open
    f = open("example.txt",encoding='utf8')
    
    # read
    lines = f.readlines()
    for line in lines:
        print(line,end="")
    
    # close
    f.close()

也可以用with,如下:

# coding:utf-8

if __name__ == "__main__":
    
    with open("example.txt",encoding='utf8') as f:
        lines = f.readlines()
        for line in lines:
            print(line,end="")

输出:

Nothing could be more wonderful!
没有比这更让人高兴的了!

三、小结

  • 完整语法:
    open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
  • 间接语法(常用):
    open(file, mode='r', encoding=None)

知识加油站:关于权限代码mode的知识,看过我之前博客的小伙伴应该都有所了解了,不清楚的小伙伴可以看我的另外一篇博客《python设置文件只读与取消文件只读》,这里就不再重复赘述了。

因为习惯了openclose,所以特意拎出来一下,一定要成双成对呀,当然您也可以用with

序号方法说明
1open()打开文件,获取文件对象io.TextIOWrapper
2close()关闭对象,这个操作一定要做,否则会造成系统资源消耗

三个读文件的方法:

序号方法说明
1read()读取文件所有内容,加载到内存中 ;此方法适用于小文件操作
2readline()读取当前文件指针中的一行内容,加载到内存中;此方法适用于大文件操作
3readlines()将制定内容写入到列表(list)中,此方法适用于小文件操作

最后,值得指出的一点是,Python不依赖底层操作系统的文本文件概念,所有的处理都是由Python本身完成的,因此与平台无关。


我的微信公众号【会飞的小猴子】,等你来关注哦 ^ - ^


参考文章:


版权声明:本文为博主原创文章,如需转载,请给出:
原文链接:https://blog.csdn.net/qq_35844043/article/details/129728434

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值