文件操作基础:读写、路径、异常处理全总结

张开发
2026/4/16 0:52:12 15 分钟阅读

分享文章

文件操作基础:读写、路径、异常处理全总结
文章目录前言一、先搞懂Python文件操作的核心逻辑二、文件读写从基础到实战一次全学会2.1 最基础文本文件读写r、w、a模式2.2 按行读取处理大文件不爆内存2.3 读写多行readlines()与writelines()2.4 二进制文件读写图片、模型、音频三、路径处理2026年最稳方案pathlib3.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已经是绝对标准没人再手动openclose因为with会自动帮你“还书”哪怕中间报错也能安全关闭。这是底线记住凡是手动open不写with的都是在埋雷。二、文件读写从基础到实战一次全学会2.1 最基础文本文件读写r、w、a模式文件操作第一步先分清三种最常用模式别搞混搞混就删数据r只读文件不存在直接报错w只写文件不存在创建存在则清空重写高危a追加写文件不存在创建存在则在末尾加内容我给你们写最稳的模板直接复制用# 读文件withopen(test.txt,r,encodingutf-8)asf:contentf.read()print(content)# 写文件清空withopen(test.txt,w,encodingutf-8)asf:f.write(Hello AI 2026\n)f.write(文件操作基础教程\n)# 追加写withopen(test.txt,a,encodingutf-8)asf:f.write(追加一行内容\n)重点强调2026年必记必须带encodingutf-8Windows默认GBKLinux/mac是UTF-8不指定编码必出乱码这是跨平台最稳写法没有之一2.2 按行读取处理大文件不爆内存很多新手犯傻用read()一次性读10GB数据集结果内存直接炸掉。正确做法逐行迭代文件对象本身就是可迭代对象一次只读一行内存占用极低。# 逐行读取推荐大文件专用withopen(ai_dataset.txt,r,encodingutf-8)asf:forlineinf:lineline.strip()# 去掉换行、空格ifline:# 跳过空行print(line)做AI数据清洗、日志分析这是标配写法。2026年哪怕你用Gemma 4、Qwen3本地推理处理大语料集也必须这么写。2.3 读写多行readlines()与writelines()# 一次性读所有行返回列表withopen(test.txt,r,encodingutf-8)asf:linesf.readlines()# 写入多行lines_to_write[第一行\n,第二行\n,AI开发2026\n]withopen(test.txt,w,encodingutf-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_dataf.read()# 写入模型文件withopen(model_2026.bin,wb)asf:f.write(model_bytes_data)小口诀文本r/w/aencodingutf-8非文本rb/wb/ab不加编码三、路径处理2026年最稳方案pathlib过去大家爱用os.path但2026年还在用os.path的基本都是老顽固。现代Python标准pathlib面向对象跨平台无敌代码更短更清晰。我直接给你最实用的用法全是AI开发高频场景。3.1 基础路径创建与拼接frompathlibimportPath# 当前目录current_dirPath(.)# 拼接路径自动适配系统file_pathPath(dataset)/2026/ai_data.txt/符号直接拼接Windows自动变\Linux/mac自动变/完美跨平台。3.2 常用路径判断pPath(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(parentsTrue,exist_okTrue)parentsTrue递归创建多级目录exist_okTrue目录已存在不抛异常这是生产环境标准写法避免因为目录已存在导致程序崩溃。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:strutf-8)-str:安全读取文件带完整异常处理pPath(file_path)try:withopen(p,r,encodingencoding)asf:returnf.read()exceptFileNotFoundError:print(f错误文件不存在 -{file_path})returnexceptPermissionError:print(f错误没有权限读取 -{file_path})returnexceptIsADirectoryError:print(f错误{file_path}是目录不是文件)returnexceptUnicodeDecodeError:print(f错误编码错误尝试用 encoding{encoding}失败)returnexceptExceptionase:print(f未知错误{str(e)})return# 使用contentsafe_read_file(ai_config.txt)同样安全写入模板defsafe_write_file(file_path:str,content:str,encoding:strutf-8)-bool:安全写入文件自动创建目录pPath(file_path)try:# 先创建目录p.parent.mkdir(parentsTrue,exist_okTrue)withopen(p,w,encodingencoding)asf:f.write(content)returnTrueexceptExceptionase:print(f写入失败{str(e)})returnFalse2026年任何正规AI项目文件读写都必须带类似封装别写裸奔代码。五、高级实战2026年AI开发必备文件技巧5.1 大文件分块读写超大型数据集如果你处理几十GB的AI训练集不能一次读入内存必须分块defread_large_file(file_path,chunk_size1024*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_pathconfig.json):pPath(config_path)withopen(p,r,encodingutf-8)asf:returnjson.load(f)defsave_config(config,config_pathconfig.json):pPath(config_path)p.parent.mkdir(parentsTrue,exist_okTrue)withopen(p,w,encodingutf-8)asf:json.dump(config,f,ensure_asciiFalse,indent4)ensure_asciiFalse保证中文不转义indent4格式化方便人类阅读5.3 CSV/TSV文件极简读写数据集常用2026年推荐用内置csv模块或pandas这里给轻量版importcsv# 读CSVwithopen(ai_data.csv,r,encodingutf-8,newline)asf:readercsv.DictReader(f)forrowinreader:print(row[name],row[value])# 写CSVwithopen(output.csv,w,encodingutf-8,newline)asf:writercsv.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_okTrue)# 不存在不报错# 删除目录递归shutil.rmtree(temp_dir)unlink(missing_okTrue)是Python3.82026年毫无压力。六、最容易踩的10个坑我22年踩出来的血泪史不用with手动open不close→ 文件句柄泄漏不指定编码→ Windows/Linux乱码线上必炸用w模式不小心覆盖重要文件→ 数据直接没了大文件read()一次性读入→ OOM内存溢出路径拼接用字符串相加→ 跨平台崩溃不判断文件是否存在→ 直接抛异常不创建目录直接写文件→ FileNotFoundError二进制文件加encoding→ 直接报错异常只抓Exception不细分→ 无法定位问题Windows路径写死\→ 放到Linux直接跑路这些坑我见过无数实习生、甚至工作几年的开发者反复踩。你把这篇文章里的模板背下来直接避开99%的坑。七、总结一张脑图记住所有文件操作核心读写with openr/w/a/rb/wb/abutf-8路径pathlibos.path用/拼接mkdir(parentsTrue, exist_okTrue)异常捕获FileNotFound、Permission、UnicodeDecodeError大文件逐行 / 分块读取配置JSON读写标配ensure_asciiFalse, indent4生产原则绝不裸奔必封装必判断必异常处理文件操作是AI开发、Python开发最基础的基本功看着简单实则决定项目稳不稳定。2026年的AI开发模型越来越强但底层基础越不能丢。你把文件操作写得干净、稳健、安全你的代码质量就已经超过80%的人。后面我会继续写《2026年AI开发工程化最佳实践》《数据集处理高阶技巧》《模型保存与加载避坑指南》关注我不迷路。P.S. 目前国内还是很缺AI人才的希望更多人能真正加入到AI行业共同促进行业进步增强我国的AI竞争力。想要系统学习AI知识的朋友可以看看我精心打磨的教程 http://blog.csdn.net/jiangjunshow教程通俗易懂高中生都能看懂还有各种段子风趣幽默从深度学习基础原理到各领域实战应用都有讲解我22年的AI积累全在里面了。注意教程仅限真正想入门AI的朋友否则看看零散的博文就够了。

更多文章