当前位置:首页>python>Python文件IO:三种读取方法read() ,readline() ,readlines()

Python文件IO:三种读取方法read() ,readline() ,readlines()

  • 2026-10-11 08:17:13
Python文件IO:三种读取方法read() ,readline() ,readlines()

上一篇我们吃透了文件读取的基础——只读模式(mode='r'),知道了如何安全打开文件。但打开文件后,怎么读取内容?是一次性读完整篇,还是逐行读?不同场景该选哪种方式?

很多新手卡在这一步,分不清 read()、readline()、readlines() 的区别,要么用错场景导致内存占用过高,要么读取结果不符合预期。其实这三种方法各有侧重,掌握它们的核心差异,就能根据文件大小和需求灵活选择。

📌 先明确:三种方法的核心定位

三种方法均用于“只读模式(r)”下读取文件内容,核心区别在于「读取范围」和「返回格式」,先记住一句话定位,后续实战慢慢印证:

1.  read():一次性读取文件全部内容,返回字符串;

2.  readline():逐行读取,每次只读取一行,返回字符串;

3.  readlines():一次性读取全部内容,按行分割,返回列表(每行为列表的一个元素)。

提前准备测试文件(test.txt),后续所有演示均基于此文件,建议大家提前创建,跟着代码实操(避免报错):

Python文件IO三种读取方法read():一次性读全部readline():逐行读readlines():读全部,按行存列表

🔍 逐个拆解:三种方法实战演示(附代码)

所有演示均使用只读模式(mode='r'),指定 encoding='utf-8',避免乱码和报错,代码可直接复制运行,重点关注“读取结果”和“用法差异”。

一、read():一次性读取全部内容(适合小型文件)

核心特点:一次性读取文件中所有内容,光标从文件开头移动到末尾;返回值是一个完整的字符串,包含文件中的换行符、空格等所有字符。

实战代码(推荐用with语句,自动关闭文件):

# read() 方法实战with open("test.txt", "r", encoding="utf-8") as file:    # 一次性读取全部内容,无参数时默认读完整篇    content = file.read()    print("read() 读取结果:")    print(content)    # 查看返回类型(字符串)    print("返回类型:", type(content))

运行结果:

read() 读取结果:Python文件IO三种读取方法read():一次性读全部readline():逐行读readlines():读全部,按行存列表返回类型: <class 'str'>

补充用法:read(size) 可指定读取的字符数(size为整数),从当前光标位置开始读取,适合精准读取部分内容:

withopen("test.txt", "r", encoding="utf-8") asfile:    # 读取前10个字符(中文、空格均算1个字符)    content1 = file.read(10)    # 从当前光标位置,再读取8个字符    content2 = file.read(8)    print("第一次读取:", content1)    print("第二次读取:", content2)

二、readline():逐行读取(适合大型文件)

核心特点:每次调用只读取一行内容,光标移动到下一行;返回值是字符串(包含当前行的换行符);多次调用可逐行读取完整文件,直到文件末尾返回空字符串。

实战代码(两种常用写法):

# 写法1:多次调用readline(),逐行读取with open("test.txt", "r", encoding="utf-8") as file:    line1 = file.readline()  # 读取第1行    line2 = file.readline()  # 读取第2行    line3 = file.readline()  # 读取第3行    line4 = file.readline()  # 读取第4行(文件已结束,返回空字符串)    print("readline() 逐行读取:")    print(line1.strip())  # strip() 去除换行符    print(line2.strip())    print(line3.strip())    print(line4)  # 空字符串# 写法2:循环调用,读取所有行(推荐,适配任意行数)print("\n循环读取所有行:")with open("test.txt", "r", encoding="utf-8") as file:    while True:        line = file.readline()        if not line:  # 读取到空字符串,说明文件结束            break        print(line.strip())

运行结果:

readline() 逐行读取:Python文件IO三种读取方法read():一次性读全部readline():逐行读循环读取所有行:Python文件IO三种读取方法read():一次性读全部readline():逐行读readlines():读全部,按行存列表

三、readlines():读取全部,按行存列表(灵活度最高)

核心特点:一次性读取文件全部内容,自动按“换行符”分割,返回一个列表;列表中的每个元素,就是文件中的一行内容(包含换行符);可通过列表索引、循环,灵活操作每一行。

实战代码:

# readlines() 方法实战with open("test.txt", "r", encoding="utf-8") as file:    lines = file.readlines()    print("readlines() 读取结果(列表):")    print(lines)    # 查看返回类型(列表)    print("返回类型:", type(lines))    # 操作列表,处理每一行(去除换行符)    print("\n处理后的内容:")    for line in lines:        print(line.strip())    # 访问指定行(索引从0开始)    print("\n第2行内容:", lines[1].strip())

运行结果:

readlines() 读取结果(列表):['Python文件IO三种读取方法\n', 'read():一次性读全部\n', 'readline():逐行读\n', 'readlines():读全部,按行存列表']返回类型: <class 'list'>处理后的内容:Python文件IO三种读取方法read():一次性读全部readline():逐行读readlines():读全部,按行存列表第2行内容: read():一次性读全部

📊 一张表分清三种方法(必存)

新手容易混淆,整理了核心差异表,一目了然,后续用的时候直接对照:

方法名       读取方式          返回类型    适用场景                核心注意点read()      一次性读全部      字符串      小型文件(几KB/MB)     大文件会占用大量内存readline()  逐行读取          字符串      大型文件(几十MB以上)  多次调用,直到返回空字符串readlines() 一次性读全部+分行  列表        任意大小文件(灵活操作)列表元素包含换行符,需处理

❌ 新手必避的3个坑(附解决方案)

三种方法用法简单,但新手很容易踩坑,每个坑都对应具体解决方案,遇到报错直接对照解决:

  • 坑1:用read()读取大型文件,导致内存溢出             解决方案:放弃read(),改用readline()(循环逐行读)或readlines()(分列表操作),降低内存占用。

  • 坑2:readline()读取后,光标位置错乱             解决方案:readline()每次调用后光标会移动到下一行,若需重新读取,需重新打开文件(或用seek()方法重置光标,后续讲解)。

  • 坑3:readlines()读取后,打印出现多余空行             解决方案:列表元素包含换行符(\n),打印时用strip()方法去除,如 line.strip()。

📝 核心总结

1.  三种方法均用于只读模式(r),核心差异在「读取范围」和「返回格式」;

2.  小型文件:优先用read()(简洁)或readlines()(灵活);

3.  大型文件:优先用readline()(省内存),避免内存溢出;

4.  需灵活操作每一行:选readlines(),通过列表索引、循环处理。

其实这三种方法不用死记硬背,多实操两次就能分清——重点是根据文件大小和需求选择,比如读取几KB的配置文件,用read()最省事;读取几百MB的日志文件,用readline()最稳妥。

✨ 小任务:用今天学的三种方法,分别读取你电脑上的一个文本文档(建议准备一个10行左右的文件),对比三种方法的读取结果和操作差异,巩固用法。

读懂代码的骨架,驾驭AI的血肉,做数字时代的超级个体🔥

最新文章

随机文章