(十九)独立练习与后续衔接
以下任务均为自拟,先预测文件内容、表中记录与输出,再运行核对。
- 逐行累计与错误定位。 文本为
20、35、很多、45,前三条处理到转换错误时,报告第 3 条记录,文件关闭。再把坏记录修成0,总量应为100。按实际控制过程选择整份失败还是跳过坏记录,并写清输出。 - CSV 完整往返。 保存标题
Python, "入门",标签包含逗号和竖线,随后读回,字段与标签内容保持相同。再加入标题内的换行,观察文本物理行数与记录数。 - 已有文件损坏。 保存一份有效快照,再把一份副本改成坏 JSON。载入应报告错误;失败过程不自动写空书架,也不覆盖那份副本。
- 事务整批撤回。 库中已有 Python,批次先加入 NumPy,再写入违反约束的记录。捕获错误后查询,NumPy 不应留下。把异常处理移进事务主体,再解释结果差异。
- 关联统计。 Python 有
20、35两条日志和两个标签,NumPy 没有日志。查询应得到 Python 总量55、NumPy 总量0,不因标签数翻倍;先画出连接中间行再实现。 - 保留主键与历史。 为 Python 记录一次
20分钟,再导入修改过标签的同名书目,编号和原日志仍然保留,标签按新书目更新。 - 查询与索引。 增加按日期区间统计,区间内两次阅读
20、35得到55,区间外的一次45不参与。观察(book_id, day)的计划,并区分结果正确与索引是否被采用。
当前书籍对象已经能跨进程保存,数据库也能把多条修改作为事务处理。继续扩展程序时,接下来需要更方便地定位错误、固定检查数据、记录日志,并在修改后快速重跑。这些工作会在下一章接到现有项目上。
本章习题解答与推导 按题号整理实现、过程说明与运行检查,可在完成练习后逐项对照。