第5篇_Python文件操作与异常处理:程序与外界交互的桥梁

第5篇_Python文件操作与异常处理:程序与外界交互的桥梁 第5篇_Python文件操作与异常处理程序与外界交互的桥梁前言在前四篇博客中我们已经建立了完整的 Python 编程基础第1篇搭建环境写下第一行代码理解变量与基础语法第2篇掌握 Python 的数据类型与运算符建立 “数据” 的认知第3篇掌握条件语句、循环、函数建立 “逻辑” 的认知第4篇深入面向对象编程建立 “结构” 的认知学到这里你的 Python 代码已经能在内存中自由运转了——变量、函数、类、对象全都在 RAM 里运行程序结束就消失。但真实世界的程序不能只活在内存里。它需要读取配置文件知道该连接哪个数据库密码是什么保存用户数据下次启动还能继续用而不是每次都重新输入读写日志文件出了问题好追查谁在什么时候做了什么操作导入别人写好的模块站在巨人的肩膀上不用重复造轮子这就需要掌握文件操作和异常处理——这是 Python 程序与外界交互的两座桥梁。本篇我们就来系统学习这两个主题。1、文件操作程序与磁盘的对话1.1、为什么需要文件操作让我们从一个生活场景说起。想象一下你正在开发一个学生成绩管理系统。用户输入了 50 名学生的成绩系统计算出了平均分、最高分、最低调并生成了报表。用户很满意关掉了程序。然后用户第二天再次打开程序——所有数据都不见了。50 名学生的成绩全部丢失必须重新输入一遍。这就是内存的问题程序运行期间数据存储在**内存RAM**中。内存的特点是 “易失性” —— 断电后数据全部消失程序退出后数据也被操作系统回收。那么如何让数据在程序退出后依然存在答案是把数据写入磁盘文件。磁盘文件是存储在硬盘、SSD 等持久存储设备上的数据单元。它们不会因为断电或程序退出而消失。只要你不主动删除文件可以存在几年甚至几十年。文件操作解决的就是 “数据持久化” 的问题把内存中的数据写入磁盘保存以及从磁盘读取数据到内存加载。1.2、理解文件路径文件在哪里在学习文件操作之前我们需要先理解一个基础概念文件路径。文件路径就是文件在操作系统中的 “地址”告诉操作系统去哪里找到这个文件。Windows 路径示例C:\Users\admin\Documents\hello.txtLinux/Mac 路径示例/home/user/documents/hello.txt路径分为两种绝对路径从磁盘根目录开始的完整路径如C:\Users\admin\Documents\hello.txt相对路径从当前工作目录开始的路径如hello.txt表示当前目录下名为 hello.txt 的文件在 Python 中我们可以使用os.getcwd()获取当前工作目录即程序运行所在的位置importosprint(os.getcwd())# 查看当前工作目录例如 /home/user/projects了解当前工作目录可以帮助我们正确地指定文件路径避免 “文件找不到” 的错误。1.3、第一个文件程序写入好了理论够了让我们写点实际的代码。# 第一次接触文件操作把文字写入文件# 新建一个文件向里面写入内容# 1. 打开文件# open(文件名, 模式) 是 Python 内置的文件打开函数# 第一个参数是文件名路径第二个参数是打开模式# 模式 w 表示写入模式write如果文件不存在会创建文件存在会清空内容# encodingutf-8 指定字符编码中文环境下基本都要写这个fileopen(hello.txt,w,encodingutf-8)# 2. 写入内容# write() 方法把字符串写入文件缓冲区注意它不会自动加换行符file.write(Hello, Python!\n)# \n 是 Unix/Linux/Mac 的换行符file.write(这是我的第一个文件程序\n)# 每写一行内容末尾加 \n换到下一行# 3. 关闭文件# 非常重要关闭后数据才会真正保存到磁盘# 如果不关闭就退出程序可能只有部分数据被写入数据丢失风险file.close()print(文件写入成功请查看 hello.txt 文件)运行这段代码你会看到当前目录下多了一个hello.txt文件用记事本或编辑器打开内容正是我们写入的两行文字。逐行详细解析代码含义open(hello.txt, w, encodingutf-8)以 “写入模式” 打开文件。w表示 write如果文件不存在会在当前目录自动创建一个新文件。如果文件已经存在原有内容会被全部清空这是w模式的一个重要特性。encodingutf-8确保中文能正确存储不写这个参数可能导致中文乱码。file.write(Hello, Python!\n)把字符串写入文件缓冲区。\n是换行符表示 “另起一行”。如果不加\n所有内容会连成一行。file.close()关闭文件。这是一个必须养成的好习惯。关闭时操作系统才会把缓冲区里的数据真正写入磁盘。如果忘记关闭程序异常退出时数据可能丢失。⚠️高危提醒w模式会覆盖已有文件如果你打开一个已存在的文件并用w模式写入原内容会全部消失。保险的做法是先用os.path.exists()判断文件是否存在或者使用a追加模式后面会讲到。