Python 异常处理与文件操作
2026年05月22日 19:22
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
2
3
Hello
World
123
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) 的作用是?