Python读取TXT文件的全攻略

 更新时间:2026年03月06日 09:41:55   作者:普通网友  
本文详细介绍了Python读取txt文件的多种方法,包括基础的open()函数和文件打开模式,以及进阶的处理大文件、不同编码的txt文件和二进制模式读取的方法,同时,还提供了常见问题的解决方法和选择合适方法的建议,需要的朋友可以参考下

Python 读取 txt 文件是最基础的文件操作之一,核心通过内置的open()函数实现,配合不同的读取方法可适配小文件、大文件、按行读取、按字节读取等不同场景。本文从基础到进阶,结合实例讲解所有常用方法。

一、核心基础:open()函数与文件打开模式

1.open()函数的基本参数

open(file, mode='r', encoding=None)
参数说明
file文件路径(相对路径:相对于当前 Python 脚本的路径;绝对路径:完整路径)
mode打开模式(默认r,只读模式),常用模式见下表
encoding文件编码格式(推荐显式指定,如utf-8gbk,避免乱码)

2. 常用文件打开模式

模式作用
r只读模式(默认),文件不存在则报错
r+读写模式,文件不存在则报错
rb二进制只读模式(用于非文本文件,如图片、视频,无需指定 encoding)
a追加模式,文件不存在则创建
w写入模式,文件不存在则创建,存在则清空原有内容

3. 关键:使用with语句(推荐)

with语句会自动关闭文件,避免因忘记调用close()导致的资源泄漏,是 Python 读取文件的最佳实践。

# 基本结构
with open("test.txt", "r", encoding="utf-8") as f:
    # 读取文件的操作
    content = f.read()

二、常用读取方法(按场景分类)

先准备一个测试文件test.txt,内容如下:

Python读取txt文件
这是第2行内容
Hello World!
这是最后一行

场景 1:小文件 → 一次性读取整个文件(read())

适合文件体积小(几 KB~ 几十 KB),需要一次性获取所有内容的场景。

# 读取整个文件
with open("test.txt", "r", encoding="utf-8") as f:
    content = f.read()  # 返回字符串,包含所有内容(包括换行符\n)
    print("文件全部内容:")
    print(content)

输出结果

文件全部内容:
Python读取txt文件
这是第2行内容
Hello World!
这是最后一行

场景 2:中等文件 → 读取所有行到列表(readlines())

将文件的每一行作为列表的一个元素,方便后续通过索引、切片处理行数据。

with open("test.txt", "r", encoding="utf-8") as f:
    lines = f.readlines()  # 返回列表,每个元素是一行内容(包含换行符\n)
    print("文件的行列表:", lines)
    print("第2行内容:", lines[1].strip())  # strip()去掉换行符和首尾空格

输出结果

文件的行列表: ['Python读取txt文件\n', '这是第2行内容\n', 'Hello World!\n', '这是最后一行']
第2行内容: 这是第2行内容

场景 3:任意文件 → 逐行读取(for循环遍历文件对象,推荐)

这是最高效、最内存友好的方式,逐行读取,不一次性加载整个文件,适合所有场景(尤其是大文件)。

with open("test.txt", "r", encoding="utf-8") as f:
    print("逐行读取文件:")
    for line in f:  # 直接遍历文件对象,每次返回一行
        print(line.strip())  # strip()去除换行符和多余空格

输出结果

逐行读取文件:
Python读取txt文件
这是第2行内容
Hello World!
这是最后一行

场景 4:精准控制 → 按字节 / 字符读取(read(n))

read(n)可指定读取的字符数(文本模式)或字节数(二进制模式),适合需要分段读取的场景。

with open("test.txt", "r", encoding="utf-8") as f:
    content1 = f.read(6)  # 读取前6个字符
    print("前6个字符:", content1)
    content2 = f.read(3)  # 从当前位置继续读取3个字符
    print("后续3个字符:", content2)

输出结果

前6个字符:Python
后续3个字符:读取t

场景 5:逐行读取(readline())

每次调用readline()读取一行,直到返回空字符串(文件结束),适合需要手动控制读取进度的场景。

with open("test.txt", "r", encoding="utf-8") as f:
    line1 = f.readline()  # 读取第一行
    line2 = f.readline()  # 读取第二行
    print("第一行:", line1.strip())
    print("第二行:", line2.strip())

输出结果

第一行:Python读取txt文件
第二行:这是第2行内容

三、进阶场景处理

1. 处理大文件(GB 级)

大文件的核心是逐行读取(避免一次性加载到内存),使用for循环遍历文件对象即可:

# 读取GB级大文件,逐行处理
with open("big_file.txt", "r", encoding="utf-8") as f:
    for line in f:
        # 处理每一行(如统计行数、提取关键信息)
        pass

2. 处理不同编码的 txt 文件

Windows 系统下的 txt 文件常使用gbk/gb2312编码,Linux/Mac 下多为utf-8,若编码不匹配会报UnicodeDecodeError,需显式指定编码:

# 读取GBK编码的文件
with open("gbk_file.txt", "r", encoding="gbk") as f:
    content = f.read()
    print(content)

# 读取带BOM的UTF-8文件(Windows记事本保存的UTF-8文件常带BOM)
with open("utf8_bom_file.txt", "r", encoding="utf-8-sig") as f:
    content = f.read()
    print(content)

3. 二进制模式读取(rb)

用于读取非文本文件(如图片、视频),或需要处理字节数据的场景:

with open("test.txt", "rb") as f:
    content = f.read()  # 返回字节串(bytes)
    print("二进制内容:", content)
    # 转换为字符串(需指定编码)
    print("转换为字符串:", content.decode("utf-8"))

四、常见问题与解决方法

问题 1:FileNotFoundError(文件不存在)

  • 解决:检查文件路径是否正确(相对路径是否相对于当前脚本,绝对路径是否完整)。

问题 2:UnicodeDecodeError(编码错误)

  • 解决:显式指定正确的编码(如utf-8gbkutf-8-sig)。

问题 3:读取的内容有多余的换行符 / 空格

  • 解决:使用strip()(去除首尾空格和换行符)、rstrip("\n")(仅去除换行符)。

问题 4:文件权限不足(PermissionError)

  • 解决:检查文件的读写权限,确保当前用户有读取权限。

五、总结:方法选择建议

场景推荐方法优点
小文件(<100KB)read() 一次性读取简单快捷
中等文件(100KB~1MB)readlines() 读取到列表方便后续行处理
大文件(>1MB)for循环遍历文件对象(逐行读取)内存友好、效率高
精准分段读取read(n)灵活控制读取量

核心原则:优先使用with语句,避免资源泄漏;大文件必用逐行读取,避免内存溢出。掌握这些方法,就能处理所有 txt 文件的读取需求。

以上就是Python读取TXT文件的全攻略的详细内容,更多关于Python读取TXT文件的资料请关注脚本之家其它相关文章!

相关文章

  • python中的import绝对导入与相对导入详解

    python中的import绝对导入与相对导入详解

    这篇文章主要介绍了python中的import绝对导入与相对导入详解,在使用python做一些简单项目时,import一般不会出现问题,但项目结构复杂时,import可能发生报错,需要的朋友可以参考下
    2023-11-11
  • jupyter notebook清除输出方式

    jupyter notebook清除输出方式

    这篇文章主要介绍了jupyter notebook清除输出方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-04-04
  • Python pygame绘制文字制作滚动文字过程解析

    Python pygame绘制文字制作滚动文字过程解析

    这篇文章主要介绍了Python pygame绘制文字制作滚动文字过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-12-12
  • keras回调函数的使用

    keras回调函数的使用

    本文主要介绍了keras回调函数的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-03-03
  • 基于Python实现IP代理池

    基于Python实现IP代理池

    在网络爬虫或数据采集领域,IP代理池是一种常用的工具,本文将详细介绍如何使用Python实现一个简单的IP代理池,有需要的可以参考一下
    2024-11-11
  • pytest中fixture函数使用

    pytest中fixture函数使用

    本文主要介绍了pytest中fixture函数使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-02-02
  • Python使用cx_Oracle调用Oracle存储过程的方法示例

    Python使用cx_Oracle调用Oracle存储过程的方法示例

    这篇文章主要介绍了Python使用cx_Oracle调用Oracle存储过程的方法,结合具体实例分析了Python中通过cx_Oracle调用PL/SQL的具体步骤与相关操作技巧,需要的朋友可以参考下
    2017-10-10
  • python如何更新包

    python如何更新包

    在本篇文章里小编给大家整理的是关于python更新包的相关知识点内容,有兴趣的朋友们可以参考下。
    2020-06-06
  • 从零教你如何使用Python实现GIF压缩效果

    从零教你如何使用Python实现GIF压缩效果

    如果你经常在网上收集各种有趣的GIF动图,但发现它们占用了太多空间,所以本文小编就来和大家详细介绍一下如何使用Python实现GIF压缩效果吧
    2025-07-07
  • 使用Python进行数据可视化

    使用Python进行数据可视化

    本文主要介绍了使用Python进行数据可视化,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-03-03

最新评论