你是不是也以为自己用requests+pandas+os就能横扫天下?
别天真了。真正的高手,都在偷偷用这些冷到结冰但快到飞起的模块。
1. pathlib:告别 os.path 的混乱
还在拼接路径用 os.path.join()?
Pathlib 是 Python 3.4+ 的现代路径操作神器,代码清爽得像刚洗过的白衬衫。
from pathlib import Path
p = Path("data") / "logs" / "app.log"
if p.exists():
print(p.read_text()[:100])
一行搞定路径构建、存在判断、读取——比 os 模块少写一半代码。
2. shutil:文件操作的瑞士军刀
复制、移动、压缩?别再手写循环了。
shutil 一行顶你十行,还自带进度条友好(配合 tqdm 更香)。
import shutil
# 整个目录打包成 zip
shutil.make_archive("backup", "zip", "project_folder")
# 快速复制整个文件夹
shutil.copytree("src", "dst", dirs_exist_ok=True)
实测:10GB 数据打包,比手动遍历快 3 倍以上(SSD 环境下)。
3. tempfile:临时文件的优雅解法
调试时总在桌面建一堆 temp123.txt?
tempfile 自动管理生命周期,程序一结束,垃圾自动消失。
import tempfile
with tempfile.NamedTemporaryFile(mode="w+", delete=True) as f:
f.write("临时数据")
f.seek(0)
print(f.read()) # 用完即焚 🔥
安全、干净、无残留——测试脚本的黄金搭档。
4. collections.deque:双端队列的暴力美学
你以为 list 能当队列用?
list.pop(0) 是 O(n) 的灾难!
而 deque.popleft() 是 **O(1)**,快到离谱。
from collections import deque
q = deque([1, 2, 3])
q.appendleft(0) # 左插
q.append(4) # 右插
print(q.popleft()) # 弹出 0,毫秒级响应
处理百万级任务队列?deque 是唯一答案。
5. functools.lru_cache:函数记忆化,免费加速器
递归算斐波那契慢如蜗牛?
加个 @lru_cache,速度飙升千倍,不用改一行逻辑。
from functools import lru_cache
@lru_cache(maxsize=128)
deffib(n):
return n if n < 2else fib(n-1) + fib(n-2)
print(fib(100)) # 瞬间出结果 ⚡
缓存命中率超 90% 的场景,性能提升不是10倍,是100倍。
6. itertools:迭代器的魔法工厂
想生成所有组合、排列、笛卡尔积?
itertools 一行搞定,内存占用几乎为零(惰性求值)。
import itertools
# 所有两两组合
for combo in itertools.combinations(['A', 'B', 'C'], 2):
print(combo) # ('A','B'), ('A','C'), ('B','C')
# 无限循环
counter = itertools.count(start=10, step=3)
print(next(counter), next(counter)) # 10, 13
处理大数据流?它比 pandas 更轻、更快。
7. concurrent.futures:并发入门,简单到哭
多线程/多进程太难?
ThreadPoolExecutor 三行实现并发,连 GIL 都能绕着走。
from concurrent.futures import ThreadPoolExecutor
import time
deffetch(url):
time.sleep(1) # 模拟网络请求
returnf"Done: {url}"
urls = ["a.com", "b.com", "c.com"]
with ThreadPoolExecutor() as executor:
results = list(executor.map(fetch, urls))
# 3 秒变 1 秒,就问你香不香?💨
CPU 密集用 ProcessPoolExecutor,IO 密集用 ThreadPoolExecutor——这是老手的默认配置。
最后说句实在话
这些模块不是“新”,而是被严重低估。
官方文档里躺着,GitHub 上没人提,但真正干活的人,早就用烂了。
下次写脚本前,先想想:
是不是又在用蛮力,而忘了 Python 早给你备好了火箭?🚀
代码跑得快,老板笑得欢——这才是程序员的硬通货。