计算机网络/计算机科学与应用/系统/运维/开发

Python 文件读取三剑客:read () /readline () /readlines () 详解

read () /readline () /readlines () 

作用:

        用于读取文件内容


统一前提:

        1、先打开文件open()

        2、操作完成关闭文件,推荐使用 with open(...) 自动关闭

        3、编码用 encoding='utf-8',避免中文乱码


操作:

        file.txt 文件内容


 第一行:Hello Python
 第二行:学习文件读取
 第三行:read readline readlines


一、 read() 一次性读取全部内容

一次性把文件所有内容读出来,返回一个字符串。

with open('test.txt', 'r', encoding='utf-8') as f:
    content = f.read()  # 读取全部内容
    
print(content)
print(type(content))  # <class 'str'>


输出:
    第一行:Hello Python
    第二行:学习文件读取
    第三行:read readline readlines
    <class 'str'>


返回:单个字符串(包含所有换行、空格)

优点:简单、直接,适合小文件

缺点:大文件会占满内存(千万不要用它读 GB 级文件)



二、 readline () —— 每次只读取一行

逐行读取,每次调用只返回一行内容(字符串),读完一行指针移到下一行开头。


语法:

文件对象.readline()


逐行读取

with open('test.txt', 'r', encoding='utf-8') as f:
    line1 = f.readline()  # 读第一行
    line2 = f.readline()  # 读第二行
    line3 = f.readline()  # 读第三行
    
print(line1, end='')  # end='' 去掉 print 自带换行
print(line2, end='')
print(line3, end='')


循环读取

with open('test.txt', 'r', encoding='utf-8') as f:
    while True:
        line = f.readline()
        if not line:  # 读到空 = 文件结束
            break
        print(line.strip())  # strip() 去掉换行/空格



三、 readlines () —— 读取所有行,返回列表

一次性读取所有行,把每一行作为列表的一个元素,返回字符串列表。

语法:

文件对象.readlines()


with open('test.txt', 'r', encoding='utf-8') as f:
    lines = f.readlines()  # 返回列表
    
print(lines)
print(type(lines))  # <class 'list'>


        遍历列表

with open('test.txt', 'r', encoding='utf-8') as f:
    lines = f.readlines()
        for line in lines:
            print(line.strip())


返回:列表(每个元素是一行字符串)

优点:方便按行索引 / 遍历,代码简洁

缺点:同样会一次性加载全部内容,不适合超大文件

四、最简单的文件读取(推荐)

Python 最优雅、最推荐的读取方式:直接遍历文件对象(等价 readline(),省内存)


with open('test.txt', 'r', encoding='utf-8') as f:
    for line in f:  # 逐行读取,最推荐!
        print(line.strip())

总结:

小文件:用 read() 最简单;需要按行操作用 readlines()

大文件:必须用 readline() 或直接 for line in f:(省内存)

三个方法都包含换行符 \n,用 strip() 可以去掉

永远优先用 with open(),自动关闭文件,不会报错


人生于世,就得有点兴致,闲暇之时,或乐游山水、或尽享食味、或寄情岁时,它让我们的生活变得充盈。

评论

^