上一章我们学习了函数与递归、匿名函数,实现了代码逻辑的封装复用;本章我们学习 Python 文件操作 —— 这是大模型开发的必备技能!读取训练语料、保存模型配置、记录训练日志、备份模型权重,全都依赖文件操作。本章内容完整重制,贴合大模型实战场景,包含文本 / 二进制读写、自动关闭文件、目录管理、大文件处理等核心知识点
一、为什么大模型开发必须学文件操作?
在模型训练中:
二、文件基础概念
1. 文件分类
- 文本文件:.txt/.json/.csv,可读,存储语料、配置、日志
- 二进制文件:.bin/.pth(模型权重)、图片、压缩包,必须用二进制模式读写
2. 文件路径
- 相对路径:./train.txt(当前目录)、../data/(上级目录),项目移植首选
- 绝对路径:D:/llm/data/train.txt(完整路径)
三、文件操作核心:打开 → 读写 → 关闭
✅ 最佳实践:with 语句(自动关闭文件,推荐!)
手动 open/close 容易忘记关闭文件导致数据丢失,with 是 Python 文件操作标准写法。
常用打开模式:
# with 自动关闭文件with open("./train_data.txt", "r", encoding="utf-8") as f: # 1. 读取全部内容 content = f.read() print("全部内容:\n", content) # 2. 逐行读取(适合大文件) # f.readline() # 3. 读取所有行,返回列表 # lines = f.readlines()
# 覆盖写入(w 模式)with open("model_config.txt", "w", encoding="utf-8") as f: f.write("模型名称:LLM_Base\n") f.write("学习率:0.001\n")# 追加写入(a 模式,训练日志专用)with open("model_config.txt", "a", encoding="utf-8") as f: f.write("第1轮损失值:0.32\n")
大模型的权重文件、数据集压缩包都是二进制格式,必须使用 rb/wb 模式。# 读取模型权重文件with open("llm_model.pth", "rb") as f: data = f.read()# 保存模型权重with open("llm_model_new.pth", "wb") as f: f.write(data)
处理批量数据集、创建文件夹,必须用 os 系统模块。import os# 1. 获取当前工作目录print("当前路径:", os.getcwd())# 2. 创建文件夹os.makedirs("./model_log", exist_ok=True)# 3. 查看目录下所有文件file_list = os.listdir("./")print("文件列表:", file_list)# 4. 判断文件是否存在print(os.path.exists("train_data.txt"))# 5. 拼接路径(跨系统兼容)full_path = os.path.join("./data", "train.txt")
import osdef save_train_log(epoch, loss, acc, log_path="train_log.txt"): """ 保存训练日志 :param epoch: 训练轮数 :param loss: 损失值 :param acc: 准确率 """ # 自动创建日志文件,追加写入 with open(log_path, "a", encoding="utf-8") as f: f.write(f"第{epoch}轮 | 损失:{loss:.4f} | 准确率:{acc:.4f}\n")# 模拟训练for i in range(1, 4): save_train_log(i, 0.32-i*0.05, 0.7+i*0.05)print("日志保存完成!")
模型权重 / 数据集文件很大,不能一次性读取,分块读写更安全。def copy_big_file(source, target, chunk=1024*1024): """ 大文件分块拷贝 :param source: 源文件 :param target: 目标文件 :param chunk: 每次读取大小 """ with open(source, "rb") as f1, open(target, "wb") as f2: while True: data = f1.read(chunk) if not data: break f2.write(data)# 拷贝模型权重copy_big_file("llm_model.pth", "model_backup.pth")print("大文件拷贝完成!")
总结:
- 核心语法:with open() as f 自动关闭文件,是最优写法
- 打开模式:r读、w覆盖写、a追加写、rb/wb二进制读写
- 文本文件:存储训练语料、配置、日志
- 二进制文件:存储模型权重、压缩数据集
- os 模块:批量管理文件夹、文件,适配大模型数据集
- 大文件处理:分块读写,防止内存溢出
下一篇预告
本章我们完整掌握了文件读写、with语句、os模块、大文件处理,搞定了大模型的数据存储与读取。下一章我们将学习 第 8 章 面向对象 —— 类和对象,把大模型、数据集、训练器封装成类,让代码更专业、更工程化!