第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.txt
Linux/Mac 路径示例: /home/user/documents/hello.txt
路径分为两种:
- 绝对路径 :从磁盘根目录开始的完整路径,如
C:\Users\admin\Documents\hello.txt - 相对路径 :从当前工作目录开始的路径,如
hello.txt(表示当前目录下名为 hello.txt 的文件)
在 Python 中,我们可以使用 os.getcwd() 获取当前工作目录(即程序运行所在的位置):
python
import os
print(os.getcwd()) # 查看当前工作目录,例如 /home/user/projects
了解当前工作目录,可以帮助我们正确地指定文件路径,避免 "文件找不到" 的错误。
1.3、第一个文件程序:写入
好了,理论够了,让我们写点实际的代码。
python
# 第一次接触文件操作:把文字写入文件
# 新建一个文件,向里面写入内容
# 1. 打开文件
# open(文件名, 模式) 是 Python 内置的文件打开函数
# 第一个参数是文件名(路径),第二个参数是打开模式
# 模式 'w' 表示写入模式(write),如果文件不存在会创建,文件存在会清空内容!
# encoding='utf-8' 指定字符编码,中文环境下基本都要写这个
file = open('hello.txt', 'w', encoding='utf-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', encoding='utf-8') |
以 "写入模式" 打开文件。'w' 表示 write,如果文件不存在,会在当前目录自动创建一个新文件。如果文件已经存在,原有内容会被全部清空 ,这是 'w' 模式的一个重要特性。encoding='utf-8' 确保中文能正确存储,不写这个参数可能导致中文乱码。 |
file.write('Hello, Python!\n') |
把字符串写入文件缓冲区。\n 是换行符,表示 "另起一行"。如果不加 \n,所有内容会连成一行。 |
file.close() |
关闭文件。这是一个必须养成的好习惯。关闭时,操作系统才会把缓冲区里的数据真正写入磁盘。如果忘记关闭,程序异常退出时数据可能丢失。 |
⚠️ 高危提醒 :
'w'模式会覆盖 已有文件!如果你打开一个已存在的文件并用'w'模式写入,原内容会全部消失。保险的做法是:先用os.path.exists()判断文件是否存在,或者使用'a'追加模式(后面会讲到)。