Python 文件读写与数据持久化实战

文件读写与持久化技术

Daoman Python AI 的后端开发或模型训练中,我们经常需要处理数据的持久化(Persistence)。所谓持久化,是指将数据从易失的存储介质(通常是内存)转移到可以长久保存的介质(通常是硬盘)中。实现这一目标最直接、最标准的方式,就是通过文件系统将数据保存到文件中。

1. 理解文件系统的抽象层

计算机的文件系统是管理数据的高级方案。它利用“文件”“树形目录”的逻辑概念,屏蔽了硬盘、闪存等物理设备的复杂底层结构。

作为开发者,你不需要关心数据具体保存在硬盘的哪个物理扇区,也不必预先寻找未使用的空白数据块。你只需要通过文件路径文件名,就能完成数据的存取。文件系统会自动完成空间的分配与释放,极大地降低了存储开发的门槛。

2. 打开与关闭文件:open 函数详解

在 Python 中,open() 函数是操作文件的核心入口。通过指定不同的操作模式,你可以决定是对文件进行读取、覆盖写入还是末尾追加。

常用操作模式速查表

操作模式具体含义适用场景
'r'读取 (Read)默认模式,打开文件读取内容
'w'写入 (Write)创建新文件或清空旧文件重新写入
'a'追加 (Append)在现有内容末尾继续写入数据
'x'排他性写入仅当文件不存在时创建并写入,防止覆盖
'b'二进制模式处理图片、模型权重文件(.pth)等非文本数据
't'文本模式默认模式,处理字符串数据
'+'更新模式使文件同时具备读写能力

🚩 核心提醒:编码(Encoding) 处理中文文本时,务必显式指定 encoding='utf-8'。若依赖系统默认编码(如 Windows 下的 GBK),在读取 UTF-8 编码的文件时会触发经典的 UnicodeDecodeError 异常。


3. 文本读写的工程化实践

在 Python 中,虽然可以使用 file.close() 手动关闭文件,但在工业级开发中,我们强烈推荐使用 with 关键字(上下文管理器)。它能确保即使在读写过程中发生异常,文件资源也能被自动、安全地释放,避免句柄泄露。

3.1 读取文本文件

根据文件大小和业务需求,有三种主流读取方式:

  • 全量读取:适用于配置文件或小型素材。
  • 逐行迭代(推荐) 内存占用极低,适合处理千万级的日志文件。
  • 列表读取:将每行作为元素存入列表,便于后续索引操作。
# 推荐写法:使用 with 上下文管理器
with open('致橡树.txt', 'r', encoding='utf-8') as file:
    # 方式 A:逐行迭代,内存最友好
    for line in file:
        print(line.strip())  # strip() 用于去除行尾换行符

3.2 写入与追加数据

当需要记录训练日志或保存爬虫结果时,可以根据需求选择 'w''a' 模式。

# 'a' 模式:在舒婷的《致橡树》末尾追加信息
with open('致橡树.txt', 'a', encoding='utf-8') as file:
    file.write('\n--- 诗歌赏析 ---')
    file.write('\n《致橡树》展现了独立、平等、相互扶持的现代爱情观。')