

🧰 说明 :Python 被称为"自带电池"(Batteries Included),其标准库 提供了大量无需安装即可使用的模块。本篇精选8 个最常用、最实用的标准库模块,助你避免重复造轮子,写出更简洁、高效的代码。
你将学会如何用标准库轻松实现:
- 日期时间处理(
datetime) - 随机数据生成(
random) - 路径与文件系统操作(
pathlib/os) - 数据序列化(
json) - 命令行参数解析(
argparse) - 正则表达式(
re) - 数学运算(
math) - 环境变量与系统信息(
os/sys)
1. datetime:日期与时间处理
常见任务
python
from datetime import datetime, timedelta
# 获取当前时间
now = datetime.now()
print(now) # 2025-12-11 17:30:45.123456
# 格式化输出
print(now.strftime("%Y-%m-%d %H:%M")) # 2025-12-11 17:30
# 解析字符串为时间
dt = datetime.strptime("2025-12-25", "%Y-%m-%d")
# 时间计算
next_week = now + timedelta(days=7)
print(next_week)
✅ 替代方案 :复杂时区处理可用第三方库 pytz 或 zoneinfo(Python 3.9+ 内置)。
2. random:生成随机数据
常用函数
python
import random
# 随机整数
print(random.randint(1, 10)) # 1~10(含)
# 随机选择
colors = ["红", "绿", "蓝"]
print(random.choice(colors)) # 随机选一个
# 打乱列表
cards = [1, 2, 3, 4, 5]
random.shuffle(cards)
print(cards) # 如 [3, 1, 5, 2, 4]
# 随机抽样(不重复)
print(random.sample(range(1, 50), 6)) # 彩票号码
⚠️ 注意:
random是伪随机,不适用于加密场景 (用secrets模块)。
3. pathlib:面向对象的路径操作(推荐!)
Python 3.4+ 推荐使用 pathlib 替代 os.path。
python
from pathlib import Path
# 创建路径对象
p = Path("data") / "input.txt" # 自动处理斜杠
# 检查存在性
if p.exists():
print("文件存在")
# 读写文件(简化!)
content = p.read_text(encoding="utf-8")
p.write_text("Hello", encoding="utf-8")
# 遍历目录
for file in Path("logs").glob("*.log"):
print(file)
# 获取父目录、文件名、后缀
print(p.parent) # data
print(p.name) # input.txt
print(p.suffix) # .txt
✅ 优势:跨平台、链式调用、代码更清晰。
4. json:数据序列化与交换
JSON 是 Web 和配置文件的通用格式。
python
import json
# Python 对象 → JSON 字符串
data = {"name": "Alice", "age": 30}
json_str = json.dumps(data, ensure_ascii=False, indent=2)
print(json_str)
# JSON 字符串 → Python 对象
obj = json.loads('{"score": 95}')
# 读写文件
with open("config.json", "w", encoding="utf-8") as f:
json.dump(data, f, ensure_ascii=False, indent=2)
with open("config.json", encoding="utf-8") as f:
config = json.load(f)
💡 提示:
ensure_ascii=False支持中文,indent=2美化输出。
5. argparse:命令行参数解析
让你的脚本能接收命令行输入!
python
# save as: greet.py
import argparse
parser = argparse.ArgumentParser(description="打招呼程序")
parser.add_argument("name", help="你的名字")
parser.add_argument("-a", "--age", type=int, default=18, help="年龄")
parser.add_argument("--verbose", action="store_true", help="详细模式")
args = parser.parse_args()
if args.verbose:
print(f"正在向 {args.name} (年龄: {args.age}) 打招呼...")
print(f"你好, {args.name}!")
运行:
bash
python greet.py 小明 --age 25 --verbose
# 输出:
# 正在向 小明 (年龄: 25) 打招呼...
# 你好, 小明!
✅ 比 sys.argv 更强大、更用户友好。
6. re:正则表达式(文本处理利器)
用于复杂文本匹配、提取、替换。
python
import re
text = "联系邮箱:admin@example.com 或 support@site.org"
# 查找所有邮箱
emails = re.findall(r'\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b', text)
print(emails) # ['admin@example.com', 'support@site.org']
# 替换敏感信息
masked = re.sub(r'\d{3}-\d{4}-\d{4}', '***-****-****', "电话:138-1234-5678")
print(masked) # 电话:***-****-****
# 编译提高性能(多次使用时)
pattern = re.compile(r'\d+') # 匹配数字
numbers = pattern.findall("价格:100元,数量:5件")
🔍 正则虽强,但不要过度使用 ------简单任务用
str.split()或in更清晰。
7. math:数学函数
python
import math
print(math.sqrt(16)) # 4.0
print(math.pi) # 3.141592653589793
print(math.ceil(3.2)) # 4(向上取整)
print(math.floor(3.8)) # 3(向下取整)
print(math.log(10)) # 自然对数
💡 科学计算建议用
numpy,但小项目math足够。
8. os 与 sys:系统交互
os:操作系统接口
python
import os
# 环境变量
home = os.getenv("HOME") # Linux/Mac
# home = os.getenv("USERPROFILE") # Windows
# 当前工作目录
print(os.getcwd())
# 列出目录内容
files = os.listdir(".")
sys:Python 解释器相关
python
import sys
# 命令行参数(原始)
print(sys.argv) # ['script.py', 'arg1', 'arg2']
# 退出程序
sys.exit(1) # 非零表示错误
# Python 版本
print(sys.version_info)
✅ 现代替代:路径用
pathlib,环境变量用os.getenv(),命令行用argparse。
标准库使用原则
| 原则 | 说明 |
|---|---|
| 优先使用标准库 | 避免引入不必要的第三方依赖 |
| 查文档再编码 | 官方文档:docs.python.org/3/library |
| 组合使用 | 如 pathlib + json 读写配置文件 |
| 注意版本兼容 | 如 pathlib 需 Python 3.4+ |
综合案例:日志清理脚本
python
# cleanup_logs.py
from pathlib import Path
import argparse
from datetime import datetime, timedelta
def main():
parser = argparse.ArgumentParser()
parser.add_argument("log_dir", help="日志目录")
parser.add_argument("--days", type=int, default=30, help="保留天数")
args = parser.parse_args()
log_path = Path(args.log_dir)
cutoff = datetime.now() - timedelta(days=args.days)
for log_file in log_path.glob("*.log"):
if log_file.stat().st_mtime < cutoff.timestamp():
print(f"删除旧日志: {log_file}")
log_file.unlink() # 删除文件
if __name__ == "__main__":
main()
运行:
bash
python cleanup_logs.py ./logs --days 7
✅ 用到了:
pathlib、argparse、datetime
下一步建议
- 探索更多标准库 :
collections:defaultdict,Counter,namedtupleitertools:高效迭代工具(已在第十二篇介绍)functools:lru_cache,wraps
- 在项目中替换手写逻辑 :
- 用
json替代手动解析配置 - 用
pathlib替代字符串拼接路径
- 用
- 阅读官方标准库文档,每周学一个新模块
🐍 "好的程序员知道标准库能做什么。"
善用标准库,是区分新手与熟手的重要标志!
继续前行,让 Python 的"电池"为你供电!

