PYTHON KNOWLEDGE · 10
异常、文件、测试与调试
读懂报错、缩小问题、设计测试,并安全地打开、读取和关闭文本文件。
GESP 2 级GESP 4 级GESP 8 级
01 · FORMAL DEFINITION
正式定义
异常是在运行期间表示错误或特殊情况的对象。调试是用可复现输入和证据定位实际行为与预期行为差异的过程;文件对象连接程序与持久化字节数据。
02 · MUST KNOW
学完这一章,必须说清楚的规则
- 01
先读 traceback 最后一行的异常类型与消息,再从最靠近自己代码的栈帧向上追踪。
- 02
try 只包可能失败的最小代码;except 捕获具体异常;else 处理成功路径;finally 做必需清理。
- 03
raise 主动报告不满足的前置条件;assert 用于开发期内部假设,不用于校验不可信用户输入。
- 04
with open(...) as file 会在退出代码块时可靠关闭文件。文本模式必须明确编码,本站统一推荐 encoding='utf-8'。
- 05
测试至少包含正常值、边界值、空数据、极端值和反例;每个测试只应有明确目的。
- 06
定位错误时一次只改一个假设,保留能稳定复现问题的最小输入。
03 · RUNNABLE EXAMPLE
可运行示例与因果解释
try:
with open('scores.txt', 'r', encoding='utf-8') as file:
scores = [int(line) for line in file if line.strip()]
except FileNotFoundError:
scores = []
print(sum(scores))OPEN MODES
文件打开模式速查
基本动作 r/w/x/a 与文本或二进制 t/b、更新标记 + 组合使用,例如 rb、w+。文本文件建议明确 encoding='utf-8'。
| 标记 | 作用 |
|---|---|
r | 读取;文件必须存在 |
w | 写入;先清空已有文件,不存在则创建 |
x | 独占创建;已存在则报错 |
a | 追加;写入位置在文件末尾 |
t | 文本模式(默认) |
b | 二进制模式,读写 bytes |
+ | 更新模式,同时允许读写;与 r/w/x/a 组合 |
COMMON PITFALLS
常见误区
- 使用 except: 吞掉所有错误
- 只测题目样例就认为程序正确
- 文本文件不写 encoding
- 修复报错表象却不验证根因
SCOPE & BOUNDARIES
适用边界
- 在线判题的学生代码由独立 Worker 执行;文件系统、网络和资源权限必须受平台限制。
- 二进制文件、JSON/CSV 和数据库各有专门格式与错误处理方式,不能按普通文本随意拆分。