【Python】基础语法入门(二十三)——标准库精选:用内置模块提升开发效率
·


🧰 说明:Python 被称为“自带电池”(Batteries Included),其标准库提供了大量高质量、跨平台的模块,覆盖文件处理、日期时间、数据结构、系统交互等常见需求。本篇精选10 个最实用的标准库模块,助你少写代码、少装依赖、写出更地道的 Python 程序。
你将掌握:
- 如何高效处理日期与时间(
datetime) - 强大的路径操作(
pathlibvsos.path) - 安全的临时文件(
tempfile) - 高效计数与分组(
collections) - 数据序列化新选择(
picklevsjson) - 命令行参数进阶(
argparse补充) - 以及其他宝藏模块(
shutil,glob,itertools,functools)
1. datetime:日期与时间处理
核心类
| 类 | 用途 |
|---|---|
datetime |
日期+时间(最常用) |
date |
仅日期 |
time |
仅时间 |
timedelta |
时间差 |
常用操作
from datetime import datetime, timedelta
# 当前时间
now = datetime.now()
print(now) # 2025-12-22 16:30:45.123456
# 解析字符串
dt = datetime.fromisoformat("2025-12-22T10:00:00")
# 或
dt = datetime.strptime("22/12/2025", "%d/%m/%Y")
# 格式化输出
print(now.strftime("%Y年%m月%d日 %H:%M")) # 2025年12月22日 16:30
# 时间计算
tomorrow = now + timedelta(days=1)
diff = tomorrow - now # timedelta 对象
✅ 最佳实践:
- 存储时间用 ISO 8601 格式(
"2025-12-22T16:30:00")- 涉及时区用
zoneinfo(Python 3.9+)或第三方库pytz
2. pathlib:面向对象的路径操作(推荐!)
替代老旧的 os.path,代码更简洁、可读。
对比示例
from pathlib import Path
# 创建路径对象
p = Path("data") / "input.txt"
# 检查存在性
if p.exists():
print(f"文件大小: {p.stat().st_size} 字节")
# 读写文本(自动处理编码)
content = p.read_text(encoding="utf-8")
p.write_text("Hello", encoding="utf-8")
# 遍历目录
for file in Path("logs").glob("*.log"):
print(file)
# 获取家目录
home = Path.home()
💡 优势:
/操作符拼接路径(跨平台)- 方法链式调用
- 自动处理不同操作系统路径分隔符
3. tempfile:安全创建临时文件/目录
避免手动命名临时文件导致的冲突或安全问题。
import tempfile
# 创建临时文件(自动删除)
with tempfile.NamedTemporaryFile(mode="w+", delete=True) as tmp:
tmp.write("临时数据")
tmp.flush()
print(tmp.name) # /tmp/tmp12345.txt
# 创建临时目录
with tempfile.TemporaryDirectory() as tmpdir:
temp_path = Path(tmpdir) / "data.txt"
temp_path.write_text("测试")
# 退出 with 块后自动删除整个目录
🔒 适用场景:
- 下载中间文件
- 测试时生成临时数据
- 安全敏感操作
4. collections:增强版容器
4.1 defaultdict:带默认值的字典
from collections import defaultdict
# 统计词频
word_count = defaultdict(int)
for word in ["apple", "banana", "apple"]:
word_count[word] += 1 # 无需检查 key 是否存在
# 分组
groups = defaultdict(list)
for name in ["Alice", "Bob", "Charlie"]:
groups[len(name)].append(name)
# {5: ['Alice'], 3: ['Bob'], 7: ['Charlie']}
4.2 Counter:快速计数
from collections import Counter
cnt = Counter(["red", "blue", "red", "green"])
print(cnt.most_common(2)) # [('red', 2), ('blue', 1)]
print(cnt["red"]) # 2
4.3 deque:双端队列(高效插入/弹出)
from collections import deque
# 模拟浏览器历史记录
history = deque(maxlen=3)
history.append("page1")
history.append("page2")
history.appendleft("page0") # 从左边加
# deque(['page0', 'page1', 'page2'], maxlen=3)
5. pickle:Python 对象序列化
将任意 Python 对象保存到文件(仅限可信环境!)。
import pickle
data = {"users": [Task("学习"), Task("编码")]} # 包含自定义对象
# 序列化
with open("data.pkl", "wb") as f:
pickle.dump(data, f)
# 反序列化
with open("data.pkl", "rb") as f:
loaded = pickle.load(f)
⚠️ 严重警告:
- 不要反序列化不可信来源的 pickle 文件(可执行任意代码!)
- 跨语言/长期存储 → 用
json- 仅用于 Python 内部临时缓存
6. argparse 进阶技巧(补充第 20 篇)
子命令 + 默认值 + 类型转换
import argparse
from pathlib import Path
parser = argparse.ArgumentParser()
parser.add_argument(
"--config",
type=Path, # 自动转为 Path 对象
default=Path("config.json"),
help="配置文件路径"
)
parser.add_argument(
"--verbose", "-v",
action="store_true", # 无参数开关
help="启用详细输出"
)
args = parser.parse_args()
if args.verbose:
print(f"使用配置: {args.config}")
7. 其他宝藏模块速览
| 模块 | 用途 | 示例 |
|---|---|---|
shutil |
高级文件操作 | shutil.copy2(src, dst)(保留元数据) |
glob |
文件名模式匹配 | glob.glob("*.py") → 所有 Python 文件 |
itertools |
迭代器工具 | itertools.chain([1,2], [3,4]) → [1,2,3,4] |
functools |
高阶函数工具 | @functools.lru_cache(缓存函数结果) |
hashlib |
安全哈希 | hashlib.sha256(b"hello").hexdigest() |
secrets |
密码学安全随机数 | secrets.token_urlsafe(16)(生成安全 token) |
实用片段
# 递归复制目录
shutil.copytree("src", "backup", dirs_exist_ok=True)
# 生成安全密码
import secrets
password = secrets.token_hex(8) # 'a1b2c3d4e5f6g7h8'
# 缓存耗时函数
from functools import lru_cache
@lru_cache(maxsize=128)
def fibonacci(n):
if n < 2:
return n
return fibonacci(n-1) + fibonacci(n-2)
8. 如何查找标准库?
方法1:官方文档
方法2:交互式帮助
import shutil
help(shutil.copy2) # 查看函数文档
# 列出模块所有属性
dir(shutil)
方法3:搜索关键词
- “Python 读取 CSV” →
csv模块 - “Python 压缩文件” →
zipfile,tarfile - “Python 多线程” →
threading,concurrent.futures
9. 最佳实践总结
| 场景 | 推荐模块 |
|---|---|
| 路径操作 | pathlib(非 os.path) |
| 日期时间 | datetime + zoneinfo |
| 临时文件 | tempfile |
| 计数/分组 | collections.Counter, defaultdict |
| 对象持久化 | 可信环境用 pickle,否则用 json |
| 命令行工具 | argparse(非 sys.argv 手动解析) |
| 安全随机 | secrets(非 random) |
🐍 原则:
“先查标准库,再考虑第三方包。”
减少依赖 = 提升稳定性 + 降低安全风险
下一步练习
- 用
pathlib重写你的 To-Do List 的文件路径逻辑 - 添加任务创建时间字段,用
datetime记录并格式化显示 - 用
collections.Counter统计任务完成状态分布 - 尝试用
tempfile为配置文件写入实现“安全保存”
🔋 标准库是你最可靠的伙伴。
掌握它,你就拥有了 Python 开发的“超能力”!
继续探索,用标准库构建更强大、更简洁的应用!

更多推荐
所有评论(0)