os:操作系统接口
import os
os.getcwd() # 当前工作目录
os.listdir(".") # 列出文件
os.makedirs("a/b/c", exist_ok=True) # 递归建目录
os.path.exists("file.txt")
os.path.join("a", "b", "c.txt") # 'a/b/c.txt'(跨平台分隔符)
os.environ["HOME"] # 环境变量
pathlib:现代版路径处理(推荐)
from pathlib import Path
p = Path("a/b/c.txt")
p.exists()
p.parent # Path('a/b')
p.name # 'c.txt'
p.stem # 'c'
p.suffix # '.txt'
p.read_text(encoding="utf-8")
p.write_text("hello", encoding="utf-8")
# 遍历
for f in Path(".").rglob("*.py"): # 递归找所有 .py
print(f)
pathlib 比 os.path 更好用——优先用它。
sys:解释器与命令行
import sys
sys.argv # 命令行参数列表
sys.exit(0) # 退出,0 = 正常
sys.platform # 'win32' / 'darwin' / 'linux'
sys.version # Python 版本
sys.stdin / stdout / stderr # 标准输入输出
json:JSON 序列化
import json
data = {"name": "WadeLy", "skills": ["Python", "AI"]}
s = json.dumps(data, ensure_ascii=False, indent=2) # 字典 → 字符串
d = json.loads(s) # 字符串 → 字典
with open("data.json", "w", encoding="utf-8") as f:
json.dump(data, f, ensure_ascii=False, indent=2)
datetime:日期时间
from datetime import datetime, date, timedelta
now = datetime.now() # 当前时间
today = date.today()
fmt = now.strftime("%Y-%m-%d %H:%M:%S")
parsed = datetime.strptime("2026-05-09", "%Y-%m-%d")
# 加减
tomorrow = today + timedelta(days=1)
in_3h = now + timedelta(hours=3)
random:随机
import random
random.random() # 0.0 ~ 1.0 浮点
random.randint(1, 100) # 1 ~ 100 整数(含两端)
random.choice(["A", "B", "C"])
random.shuffle(my_list) # 原地打乱
random.sample(my_list, 3) # 不重复抽 3 个
collections:高级容器
from collections import Counter, defaultdict, deque
Counter("hello") # Counter({'l': 2, 'h': 1, 'e': 1, 'o': 1})
defaultdict(list) # 取不存在的键自动给空列表
deque([1, 2, 3]) # 双端队列,append/popleft 都 O(1)
itertools:迭代利器
from itertools import product, combinations, chain
list(product([1,2], [3,4])) # [(1,3), (1,4), (2,3), (2,4)]
list(combinations([1,2,3,4], 2)) # 所有 2 元组合
list(chain([1,2], [3,4])) # [1,2,3,4] 连接
下一篇讲包管理:怎么装第三方库 + 虚拟环境。