news 2026/4/16 0:52:10

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
文件操作基础:读写、路径、异常处理全总结

文章目录

    • 前言
    • 一、先搞懂: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开发、数据处理、自动化脚本,绕不开一件事:文件操作

不管你是读数据集、写模型日志、保存训练权重、处理配置文件,还是做批量数据清洗,本质上都是在和「文件」打交道。很多新手刚入门时,觉得文件读写就是几行openreadwrite,随便写写就能跑。结果一上生产环境,各种坑接踵而至:路径找不到、编码乱码、文件忘关导致句柄泄漏、并发读写冲突、权限不够、大文件内存爆炸……

我做了22年开发,从早期本地AI模型训练,到2026年现在云原生+本地轻量化模型并行部署,见过太多项目因为文件操作不规范翻车:日志写崩、数据丢失、服务卡死、甚至线上故障。

这篇文章,我用最通俗、带点段子的方式,把文件读写、路径处理、异常处理三大核心模块一次性讲透,全部基于2026年最新Python规范与最佳实践,不搞过时套路,不写玄学代码,小白也能直接照抄用,老鸟也能查漏补缺。全文干货拉满,建议直接收藏,以后写文件操作直接翻这一篇就够。

一、先搞懂:Python文件操作的核心逻辑

很多人上来就写open("a.txt"),但根本不知道底层发生了什么。我打个比方:

文件操作 = 去图书馆借书还书

  • open():拿借书证,申请打开这本书
  • read()/write():翻书看、写笔记
  • close():还书,归还资源

你只借书不还书,图书馆(操作系统)的资源就被你占满了,最后谁都借不了——这就是文件句柄泄漏

2026年的Python生态里,with open已经是绝对标准,没人再手动open+close,因为with会自动帮你“还书”,哪怕中间报错也能安全关闭。这是底线,记住:凡是手动open不写with的,都是在埋雷

二、文件读写:从基础到实战,一次全学会

2.1 最基础:文本文件读写(rwa模式)

文件操作第一步,先分清三种最常用模式,别搞混,搞混就删数据:

  1. r:只读,文件不存在直接报错
  2. w:只写,文件不存在创建,存在则清空重写(高危!)
  3. 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模型文件、音频、视频,这些都是二进制文件,要用rbwbab模式,不能加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类异常:

  1. FileNotFoundError:文件不存在
  2. PermissionError:权限不足
  3. IsADirectoryError:把目录当文件打开
  4. 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)}")returnFalse

2026年任何正规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年踩出来的血泪史)

  1. 不用with,手动openclose→ 文件句柄泄漏
  2. 不指定编码→ Windows/Linux乱码,线上必炸
  3. w模式不小心覆盖重要文件→ 数据直接没了
  4. 大文件read()一次性读入→ OOM内存溢出
  5. 路径拼接用字符串相加→ 跨平台崩溃
  6. 不判断文件是否存在→ 直接抛异常
  7. 不创建目录直接写文件→ FileNotFoundError
  8. 二进制文件加encoding→ 直接报错
  9. 异常只抓Exception不细分→ 无法定位问题
  10. Windows路径写死\→ 放到Linux直接跑路

这些坑,我见过无数实习生、甚至工作几年的开发者反复踩。你把这篇文章里的模板背下来,直接避开99%的坑。

七、总结:一张脑图记住所有文件操作核心

  • 读写with open+r/w/a/rb/wb/ab+utf-8
  • 路径pathlib>os.path,用/拼接,mkdir(parents=True, exist_ok=True)
  • 异常:捕获FileNotFoundPermissionUnicodeDecodeError
  • 大文件:逐行 / 分块读取
  • 配置: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的朋友,否则看看零散的博文就够了。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/16 0:48:50

从‘单活’到‘真双活’:手把手教你配置华三M-LAG+VRRP与M-LAG双活网关(含避坑指南)

华三M-LAG双活网关实战:从架构设计到避坑指南 在数据中心网络架构中,网关冗余设计一直是保障业务连续性的关键环节。传统的主备模式虽然实现了基础的高可用性,但在流量负载均衡和故障切换效率方面存在明显短板。本文将深入解析华三M-LAG技术的…

作者头像 李华
网站建设 2026/4/16 0:45:51

华硕ROG XBOX 掌机 X RC73XA 原厂Win11 24H2 系统分享下载

华硕ROG XBOX掌机X RC73XA自带一键恢复功能,即使系统异常或更换硬盘后也能通过原厂工厂文件轻松恢复到出厂设置。支持Windows 11 24H2家庭版系统,用户仅需准备一个容量大于20G的U盘,并按照提供的安装教程操作即可完成恢复过程,确保…

作者头像 李华
网站建设 2026/4/16 0:44:09

终极网盘直链解析指南:如何真正掌控你的云盘下载速度

终极网盘直链解析指南:如何真正掌控你的云盘下载速度 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中国移动云盘 / 天翼云…

作者头像 李华
网站建设 2026/4/16 0:43:15

Deebot智能扫地机如何无缝融入Home Assistant?3大核心价值解析

Deebot智能扫地机如何无缝融入Home Assistant?3大核心价值解析 【免费下载链接】Deebot-4-Home-Assistant Home Assistant integration for deebot vacuums 项目地址: https://gitcode.com/gh_mirrors/de/Deebot-4-Home-Assistant 还在为多个智能家居App切换…

作者头像 李华
网站建设 2026/4/16 0:39:33

别再只看像素了!工业相机镜头选型避坑指南:从像面规格到法兰距的实战解析

工业相机镜头选型实战指南:从参数匹配到系统兼容的深度解析 在工业视觉项目中,镜头选型往往成为最容易被低估的环节。许多工程师习惯性地将注意力集中在相机像素和价格上,却忽略了镜头参数与整体成像系统的匹配度。我曾参与过一个锂电池极片检…

作者头像 李华