Python 异常处理与文件操作

2026年05月22日 19:22

Python 异常处理与文件操作 — 互动教学

Python 异常处理与文件操作

学会捕获错误、读写文件、控制时间,让你的程序更加健壮和实用

向下滚动开始
1

异常处理模拟器

💡异常就是程序运行时的"意外事故"。就像开车遇到路障——不处理会直接撞上去(程序崩溃),用 try-except就像提前看到路障标志,绕过去并给出提示。还知道"不管有没有路障,最后都要到终点"——这就是 finally

基本结构:try-except

选择错误场景:
不使用 try-except
使用 try-except

完整结构:try-except-else-finally

💡else = 没出错时才跑的奖励;finally = 不管出没出错都要跑的终点站。就像考试:没挂科 → 领奖学金,挂科 → 补考;但不管怎样都要交卷。
模拟场景:
try
except
else
finally
try: x = 10 / 0 y = x + 1 except ZeroDivisionError: print("出错了!") else: print("计算完成!") finally: print("清理资源")

主动抛出异常:raise

💡raise 就像主动拉警报——当你发现输入不合法时,主动报错比让程序继续错下去更好。比如年龄不能是负数,你就在检测到负数时 raise ValueError("年龄不能为负数")
请输入一个正数:
num = -5 if num < 0: raise ValueError("不能为负数") print("这行不会执行")

常见异常类型速览
ZeroDivisionError ValueError TypeError IndexError KeyError FileNotFoundError NameError AttributeError
练一练:安全除法器
💡输入两个数字做除法,用 try-except 同时捕获除零错误和非数字输入错误。
a =b =
2

文件模式实验室

💡文件操作就像用笔记本——打开(open)、读写(read/write)、关闭(close)。忘记关本子可能丢数据。'r' 是只读(只能看不能改),'w' 是重写(清空后写入),'a' 是追加(在末尾添加)。
虚拟文件内容(模拟 numbers.txt)
1
2
3
Hello
World
123
打开模式: 写入内容:

with 语句对比

💡with open(...) as f: 就像带自动关闭功能的笔记本——离开 with 缩进块后,文件自动关闭,即使中途出异常也不会忘记关。
手动 close(容易忘记)
f = open("data.txt", "r") content = f.read() # 如果这里出异常... f 不会关闭! f.close() # 容易忘记
with 自动关闭(推荐)
with open("data.txt", "r") as f: content = f.read() # 自动关闭!即使出异常也会关

文件指针:seek() 和 tell()

💡文件指针就像书签——tell() 告诉你当前读到哪了(位置),seek(n) 把书签移到第 n 个字符处。读取操作会让指针往后移动。
seek 位置: 位置: 0
练一练:with 写入并读取
💡用 with 语句将一段文字写入虚拟文件 test.txt,再用 'r' 模式读出来显示。
内容:
3

文件读写实战

💡实际应用中,文件可能不存在、内容格式可能出错。所以文件操作一定要配合异常处理——读文件时捕获 FileNotFoundError,转换数字时捕获 ValueError
模拟 numbers.txt 内容(可编辑)
程序输出日志
生成的 sum.txt
文件指针追踪: tell() = 0
练一练:读取配置并求平均
💡修改 numbers.txt 内容,加入一些非数字行,观察程序如何跳过错误行并计算平均值。
4

time 模块小工具

💡time 模块让程序与时间交互。sleep() 让程序"打个盹",time() 记录时间戳(像秒表按下计时),ctime() 把时间戳变成人能看懂的日期字符串。

sleep 倒计时演示

💡time.sleep(秒) 让程序暂停指定秒数。常用于控制节奏(如每秒刷新一次数据)。
倒计时秒数:
5
import time for i in range(5, 0, -1): print(i) time.sleep(1) print("时间到!")

时间戳与可读时间

1779495757
time.time() — 时间戳(秒)
Sat May 23 2026 08:22:37 GMT+0800 (中国标准时间)
time.ctime() — 可读时间字符串
import time ts = time.time() ct = time.ctime()

测量程序运行时间

💡在任务开始前记录 start = time.time(),结束后 end = time.time(),差值就是耗时。像按秒表一样简单。
模拟任务量:
import time start = time.time() for i in range(1000000): pass end = time.time() print(f"耗时: {end - start:.4f} 秒")
练一练:定时打印
💡模拟"每隔 2 秒打印一次当前时间,共 3 次"的效果。点击开始观察。

小测验

try-except-else-finally 结构中,else 块什么时候执行?
'w' 模式打开一个已有文件并写入内容,会发生什么?
使用 with open(...) as f: 的主要好处是?
要捕获"文件不存在"的错误,应该写?
time.sleep(2) 的作用是?
Python 异常处理与文件操作 — 互动教学