Python系列 - 文件读取

前言

文件读取是最常见的IO操作,python中内置了读写文件的函数

文件读取

可使用python内置的open()函数,传入文件名以及标示符

伪代码如下

用open打开文件
打开文件成功,调用read()方法可以一次性读取文件的全部内容
调用close方法,关闭文件

代码实现:

filepath = './test.txt'
f = open(filepath,'r',encoding='utf-8')
print(f.read())
f.close()

打印结果如下:

这就是一个测试文件
嘻嘻嘻
哈哈哈
test
emmm

查看open()的源码可知完整的语法格式

open(file, mode='r', buffering=None, encoding=None, errors=None, newline=None, closefd=True)

参数说明:

- file:必须,表示文件路径
- mode:可选,表示文件打开模式
- buffering:设置缓冲
- encoding:一般使用utf-8
- errors:报错级别
- newline:区分换行符
- closefd:传入的file参数类型

常用读写模式

r :   读取文件,若文件不存在则会报错
w:   写入文件,若文件不存在则会先创建再写入,会覆盖原文件
a :   写入文件,若文件不存在则会先创建再写入,但不会覆盖原文件,而是追加在文件末尾
rb,wb:  分别于r,w类似,但是用于读写二进制文件
r+ :   可读、可写,文件不存在也会报错,写操作时会覆盖
w+ :   可读,可写,文件不存在先创建,会覆盖
a+ :  可读、可写,文件不存在先创建,不会覆盖,追加在末尾
b:二进制模式
可以组合使用,如:
- rb:二进制读
- wb:二进制写
...

🎑ATTENTION:

  • 文件使用完毕后必须关闭,因为文件对象会占用操作系统的资源
  • open()打开文件时,如果文件不存在,会抛出一个IORrror错误
  • 由于读写文件都有可能产生IORrror,一旦出错,后面的内容就不会被调用,所以一般组合try...finally使用
  • 若要打开图片、视频等文件,使用二进制模式b

with语句

前面提到,每次组合try...finally使用,比较繁琐,可以使用with语句来调用close()方法:

filepath = './test.txt'
with open(filepath,'r',encoding='utf-8') as f:
    print(f.read())

🎑ATTENTION:

  • 使用with可以隐式处理异常

读取文件的三种方法

read()readline()readlines()

read()

前面有介绍,不赘述

🎑ATTENTION:

  • 优点:方便,简单;一次性读出文件放在一个大字符串中,速度最快
  • 缺点:文件过大的时候,占用内存会过大

readline()

读取第一行内容

with open(filepath,'r',encoding='utf-8') as f:
    line = f.readline()
    print(line)

运行结果如下:

这就是一个测试文件

readlines()

读取文本所有内容,并且以列表的格式返回结果,一般配合for in使用

with open(filepath,'r',encoding='utf-8') as f:
    for line in f.readlines():
        # readlines()读取的文本内容,每行文本都带有一个'\n'换行符,可以去除列表中每一个元素的换行符
        line = line.strip('\n')
        print(line)

运行结果如下:

这就是一个测试文件
嘻嘻嘻
哈哈哈
test
emmm

🎑ATTENTION:

  • 一次性读取,速度比较快
  • 随着文本增大,占用内存会越来越多
posted @ 2021-10-05 16:43  莫伊101  阅读(64)  评论(0)    收藏  举报