文章目录
- 前言
- 一、先搞懂:Python文件操作的核心逻辑
- 二、文件读写:从基础到实战,一次全学会
- 2.1 最基础:文本文件读写(`r`、`w`、`a`模式)
- 2.2 按行读取:处理大文件不爆内存
- 2.3 读写多行:`readlines()`与`writelines()`
- 2.4 二进制文件读写:图片、模型、音频
- 三、路径处理:2026年最稳方案(pathlib)
- 3.1 基础路径创建与拼接
- 3.2 常用路径判断
- 3.3 目录创建(安全写法)
- 3.4 遍历目录:批量处理AI文件
- 四、异常处理:文件操作的“保命符”
- 五、高级实战:2026年AI开发必备文件技巧
- 5.1 大文件分块读写(超大型数据集)
- 5.2 JSON配置文件读写(AI项目标配)
- 5.3 CSV/TSV文件极简读写(数据集常用)
- 5.4 文件复制、移动、删除(pathlib版)
- 六、最容易踩的10个坑(我22年踩出来的血泪史)
- 七、总结:一张脑图记住所有文件操作核心
P.S. 目前国内还是很缺AI人才的,希望更多人能真正加入到AI行业,共同促进行业进步,增强我国的AI竞争力。想要系统学习AI知识的朋友可以看看我精心打磨的教程 http://blog.csdn.net/jiangjunshow,教程通俗易懂,高中生都能看懂,还有各种段子风趣幽默,从深度学习基础原理到各领域实战应用都有讲解,我22年的AI积累全在里面了。注意,教程仅限真正想入门AI的朋友,否则看看零散的博文就够了。
前言
做AI开发、数据处理、自动化脚本,绕不开一件事:文件操作。
不管你是读数据集、写模型日志、保存训练权重、处理配置文件,还是做批量数据清洗,本质上都是在和「文件」打交道。很多新手刚入门时,觉得文件读写就是几行open、read、write,随便写写就能跑。结果一上生产环境,各种坑接踵而至:路径找不到、编码乱码、文件忘关导致句柄泄漏、并发读写冲突、权限不够、大文件内存爆炸……
我做了22年开发,从早期本地AI模型训练,到2026年现在云原生+本地轻量化模型并行部署,见过太多项目因为文件操作不规范翻车:日志写崩、数据丢失、服务卡死、甚至线上故障。
这篇文章,我用最通俗、带点段子的方式,把文件读写、路径处理、异常处理三大核心模块一次性讲透,全部基于2026年最新Python规范与最佳实践,不搞过时套路,不写玄学代码,小白也能直接照抄用,老鸟也能查漏补缺。全文干货拉满,建议直接收藏,以后写文件操作直接翻这一篇就够。
一、先搞懂:Python文件操作的核心逻辑
很多人上来就写open("a.txt"),但根本不知道底层发生了什么。我打个比方:
文件操作 = 去图书馆借书还书
open():拿借书证,申请打开这本书read()/write():翻书看、写笔记close():还书,归还资源
你只借书不还书,图书馆(操作系统)的资源就被你占满了,最后谁都借不了——这就是文件句柄泄漏。
2026年的Python生态里,with open已经是绝对标准,没人再手动open+close,因为with会自动帮你“还书”,哪怕中间报错也能安全关闭。这是底线,记住:凡是手动open不写with的,都是在埋雷。
二、文件读写:从基础到实战,一次全学会
2.1 最基础:文本文件读写(r、w、a模式)
文件操作第一步,先分清三种最常用模式,别搞混,搞混就删数据:
r:只读,文件不存在直接报错w:只写,文件不存在创建,存在则清空重写(高危!)a:追加写,文件不存在创建,存在则在末尾加内容
我给你们写最稳的模板,直接复制用:
# 读文件withopen("test.txt","r",encoding="utf-8")asf:content=f.read()print(content)# 写文件(清空)withopen("test.txt","w",encoding="utf-8")asf:f.write("Hello AI 2026\n")f.write("文件操作基础教程\n")# 追加写withopen("test.txt","a",encoding="utf-8")asf:f.write("追加一行内容\n")重点强调(2026年必记):
- 必须带
encoding="utf-8" - Windows默认GBK,Linux/mac是UTF-8,不指定编码必出乱码
- 这是跨平台最稳写法,没有之一
2.2 按行读取:处理大文件不爆内存
很多新手犯傻:用read()一次性读10GB数据集,结果内存直接炸掉。
正确做法:逐行迭代,文件对象本身就是可迭代对象,一次只读一行,内存占用极低。
# 逐行读取(推荐!大文件专用)withopen("ai_dataset.txt","r",encoding="utf-8")asf:forlineinf:line=line.strip()# 去掉换行、空格ifline:# 跳过空行print(line)做AI数据清洗、日志分析,这是标配写法。2026年哪怕你用Gemma 4、Qwen3本地推理,处理大语料集也必须这么写。
2.3 读写多行:readlines()与writelines()
# 一次性读所有行(返回列表)withopen("test.txt","r",encoding="utf-8")asf:lines=f.readlines()# 写入多行lines_to_write=["第一行\n","第二行\n","AI开发2026\n"]withopen("test.txt","w",encoding="utf-8")asf:f.writelines(lines_to_write)注意:writelines不会自动加换行符,要自己加\n。
2.4 二进制文件读写:图片、模型、音频
AI开发里经常要读图片、读.pth/.bin模型文件、音频、视频,这些都是二进制文件,要用rb、wb、ab模式,不能加encoding。
# 读取图片(二进制)withopen("ai_image.jpg","rb")asf:img_data=f.read()# 写入模型文件withopen("model_2026.bin","wb")asf:f.write(model_bytes_data)小口诀:
- 文本:
r/w/a+encoding="utf-8" - 非文本:
rb/wb/ab,不加编码
三、路径处理:2026年最稳方案(pathlib)
过去大家爱用os.path,但2026年还在用os.path的,基本都是老顽固。
现代Python标准:pathlib,面向对象,跨平台无敌,代码更短更清晰。
我直接给你最实用的用法,全是AI开发高频场景。
3.1 基础路径创建与拼接
frompathlibimportPath# 当前目录current_dir=Path(".")# 拼接路径(自动适配系统)file_path=Path("dataset")/"2026"/"ai_data.txt"/符号直接拼接,Windows自动变\,Linux/mac自动变/,完美跨平台。
3.2 常用路径判断
p=Path("test.txt")print(p.exists())# 是否存在print(p.is_file())# 是否是文件print(p.is_dir())# 是否是文件夹print(p.absolute())# 绝对路径print(p.parent)# 父目录print(p.name)# 文件名print(p.stem)# 文件名(无后缀)print(p.suffix)# 后缀(.txt)做AI项目时,判断数据集是否存在、创建输出目录,全靠这几行。
3.3 目录创建(安全写法)
# 创建目录,不存在则创建,已存在不报错Path("output/model_2026").mkdir(parents=True,exist_ok=True)parents=True:递归创建多级目录exist_ok=True:目录已存在不抛异常
这是生产环境标准写法,避免因为目录已存在导致程序崩溃。
3.4 遍历目录:批量处理AI文件
# 遍历当前目录所有txt文件forfileinPath(".").glob("*.txt"):print(file)# 递归遍历所有子目录forfileinPath("dataset").rglob("*.jpg"):print(file)做图像数据集、语音数据集批量处理,这是最常用代码。
四、异常处理:文件操作的“保命符”
不做异常处理的代码,只能在自己电脑跑,一上测试/生产必崩。
文件操作最常见4类异常:
FileNotFoundError:文件不存在PermissionError:权限不足IsADirectoryError:把目录当文件打开UnicodeDecodeError:编码错误
我给你写工业级异常处理模板,直接套用到任何文件读写代码:
frompathlibimportPathdefsafe_read_file(file_path:str,encoding:str="utf-8")->str:"""安全读取文件,带完整异常处理"""p=Path(file_path)try:withopen(p,"r",encoding=encoding)asf:returnf.read()exceptFileNotFoundError:print(f"错误:文件不存在 ->{file_path}")return""exceptPermissionError:print(f"错误:没有权限读取 ->{file_path}")return""exceptIsADirectoryError:print(f"错误:{file_path}是目录,不是文件")return""exceptUnicodeDecodeError:print(f"错误:编码错误,尝试用 encoding={encoding}失败")return""exceptExceptionase:print(f"未知错误:{str(e)}")return""# 使用content=safe_read_file("ai_config.txt")同样,安全写入模板:
defsafe_write_file(file_path:str,content:str,encoding:str="utf-8")->bool:"""安全写入文件,自动创建目录"""p=Path(file_path)try:# 先创建目录p.parent.mkdir(parents=True,exist_ok=True)withopen(p,"w",encoding=encoding)asf:f.write(content)returnTrueexceptExceptionase:print(f"写入失败:{str(e)}")returnFalse2026年任何正规AI项目,文件读写都必须带类似封装,别写裸奔代码。
五、高级实战:2026年AI开发必备文件技巧
5.1 大文件分块读写(超大型数据集)
如果你处理几十GB的AI训练集,不能一次读入内存,必须分块:
defread_large_file(file_path,chunk_size=1024*1024):withopen(file_path,"rb")asf:whilechunk:=f.read(chunk_size):# 处理分块process_chunk(chunk):=海象运算符,Python3.8+支持,2026年已是常规操作。
5.2 JSON配置文件读写(AI项目标配)
几乎所有AI项目都有config.json,标准写法:
importjsonfrompathlibimportPathdefload_config(config_path="config.json"):p=Path(config_path)withopen(p,"r",encoding="utf-8")asf:returnjson.load(f)defsave_config(config,config_path="config.json"):p=Path(config_path)p.parent.mkdir(parents=True,exist_ok=True)withopen(p,"w",encoding="utf-8")asf:json.dump(config,f,ensure_ascii=False,indent=4)ensure_ascii=False:保证中文不转义indent=4:格式化,方便人类阅读
5.3 CSV/TSV文件极简读写(数据集常用)
2026年推荐用内置csv模块或pandas,这里给轻量版:
importcsv# 读CSVwithopen("ai_data.csv","r",encoding="utf-8",newline="")asf:reader=csv.DictReader(f)forrowinreader:print(row["name"],row["value"])# 写CSVwithopen("output.csv","w",encoding="utf-8",newline="")asf:writer=csv.DictWriter(f,fieldnames=["name","value"])writer.writeheader()writer.writerow({"name":"Gemma4","value":"2026"})5.4 文件复制、移动、删除(pathlib版)
frompathlibimportPathimportshutil# 复制文件shutil.copy2("src.txt","dst.txt")# 移动/重命名Path("old.txt").rename("new.txt")# 删除文件Path("temp.txt").unlink(missing_ok=True)# 不存在不报错# 删除目录(递归)shutil.rmtree("temp_dir")unlink(missing_ok=True)是Python3.8+,2026年毫无压力。
六、最容易踩的10个坑(我22年踩出来的血泪史)
- 不用
with,手动open不close→ 文件句柄泄漏 - 不指定编码→ Windows/Linux乱码,线上必炸
- 用
w模式不小心覆盖重要文件→ 数据直接没了 - 大文件
read()一次性读入→ OOM内存溢出 - 路径拼接用字符串相加→ 跨平台崩溃
- 不判断文件是否存在→ 直接抛异常
- 不创建目录直接写文件→ FileNotFoundError
- 二进制文件加
encoding→ 直接报错 - 异常只抓
Exception不细分→ 无法定位问题 - Windows路径写死
\→ 放到Linux直接跑路
这些坑,我见过无数实习生、甚至工作几年的开发者反复踩。你把这篇文章里的模板背下来,直接避开99%的坑。
七、总结:一张脑图记住所有文件操作核心
- 读写:
with open+r/w/a/rb/wb/ab+utf-8 - 路径:
pathlib>os.path,用/拼接,mkdir(parents=True, exist_ok=True) - 异常:捕获
FileNotFound、Permission、UnicodeDecodeError - 大文件:逐行 / 分块读取
- 配置:JSON读写标配
ensure_ascii=False, indent=4 - 生产原则:绝不裸奔,必封装,必判断,必异常处理
文件操作是AI开发、Python开发最基础的基本功,看着简单,实则决定项目稳不稳定。2026年的AI开发,模型越来越强,但底层基础越不能丢。你把文件操作写得干净、稳健、安全,你的代码质量就已经超过80%的人。
后面我会继续写《2026年AI开发工程化最佳实践》《数据集处理高阶技巧》《模型保存与加载避坑指南》,关注我,不迷路。
P.S. 目前国内还是很缺AI人才的,希望更多人能真正加入到AI行业,共同促进行业进步,增强我国的AI竞争力。想要系统学习AI知识的朋友可以看看我精心打磨的教程 http://blog.csdn.net/jiangjunshow,教程通俗易懂,高中生都能看懂,还有各种段子风趣幽默,从深度学习基础原理到各领域实战应用都有讲解,我22年的AI积累全在里面了。注意,教程仅限真正想入门AI的朋友,否则看看零散的博文就够了。