标准库阅读指南:根据任务选择模块
Python 标准库包含很多模块。面对一个真实任务,应该先选模块,还是先翻 API?基础阶段不需要从头背完所有内容,先根据输入、处理过程和输出找到合适的模块,再进入对应章节完成任务。
这一章是标准库部分的阅读入口。遇到具体需求时,可以从下面的任务映射和学习路线开始。
任务与模块映射
| 想完成的任务 | 优先阅读 | 选择说明 |
|---|---|---|
| 统计运行耗时、暂停一段时间 | time | 适合计时、时间戳和短暂等待 |
| 处理日期、截止时间和时间间隔 | datetime | 业务中的日期时间优先使用 |
| 获取当前目录、环境变量或遍历目录 | os | 处理操作系统和已有 os 接口 |
| 确认解释器、读取命令行参数 | sys | 处理 Python 运行环境和程序入口参数 |
| 记录程序运行过程 | logging | 用级别和日志文件保存运行信息 |
| 提取、校验或替换格式化文本 | re | 普通字符串方法不足时再使用正则 |
| 拼接路径、判断文件、读写小文件 | pathlib | 新代码中的路径操作优先选择 |
| 复制、移动、删除目录或制作备份 | shutil | 处理高层文件和目录操作 |
| 按通配符批量查找文件 | glob | 根据文件名模式查找一批路径 |
| 创建、检查或解压 ZIP 文件 | zipfile | 处理 ZIP 归档和解压安全检查 |
先描述任务,再选模块
“我要使用 os”不是任务。“我要递归统计目录中的 Python 文件”才是任务。先说清输入、处理过程和输出,再决定需要哪个模块。
文件自动化路线
如果目标是整理课程资料、批量查找文件或制作备份,建议按下面的路线阅读:
text
pathlib → glob → shutil → zipfileos 中仍有环境变量、目录遍历和大量已有项目会使用的接口,可以作为补充阅读。新项目只需要进行常规路径操作时,优先从 pathlib 开始。
日期与计时路线
业务日期和程序计时是两类不同任务:
text
日期、截止时间、时间间隔 → datetime
运行耗时、暂停、时间戳 → time先阅读 datetime,掌握日期、日期时间和时间差;需要统计代码耗时或暂停程序时,再阅读 time。
命令行工具路线
需要编写能够接收终端参数的脚本时,可以按下面的路线组合:
text
sys → pathlib → logging日志与文本处理路线
如果程序需要先记录日志,再从日志中提取信息,可以按下面的路线阅读:
text
logging → relogging 负责生成结构清楚的运行记录;re 可以从格式相对稳定的文本中提取字段。
普通的查找、替换和切分能够解决问题时,继续使用字符串方法。只有规则比较复杂时再引入正则表达式。
学习范围与优先级
第一次学习标准库,应该按项目需要选择,不要求一次学完全部章节。
核心能力
- 能使用
import导入模块。 - 能根据任务找到对应章节。
- 能运行综合案例并修改输入数据。
- 能通过官方文档或编辑器提示查询函数参数。
- 涉及文件删除、覆盖和解压时,会先检查目标路径。
按需内容
- 暂时用不到的模块可以先跳过。
- 每个模块中的进阶参数不要求背诵。
- 不同模块功能重叠时,先掌握课程推荐的常用方案。
模块选择边界
time 与 datetime
- 处理日历日期、截止时间和时间间隔,优先使用
datetime。 - 统计程序耗时、暂停程序或处理基础时间戳,使用
time。
os.path 与 pathlib
- 新代码中的常规路径操作,优先使用
pathlib。 - 阅读旧代码或需要
os的系统能力时,再使用os.path。
Path.glob() 与 glob
- 已经使用
Path对象时,可以继续使用Path.glob()。 - 需要单独讲解通配符、隐藏文件和
root_dir等能力时,阅读glob章节。
pathlib 与 shutil
- 创建路径、判断状态和读写小型文本文件,使用
pathlib。 - 复制目录树、移动文件和递归删除目录,使用
shutil。
任务选择练习
面对下面的任务,先不要写代码,先选出模块并说明选择依据:
- 计算作业距离截止日期还有几天。
- 找出资料目录中的全部
.md文件并打包。 - 从程序参数中读取成绩文件路径。
- 把程序错误写入日志文件。
- 从日志文本中提取日期、级别和消息。
能够根据任务选出模块后,再进入对应章节学习具体 API。