当前位置:首页>python>Python 标准库:你身边藏着一把瑞士军刀

Python 标准库:你身边藏着一把瑞士军刀

  • 2026-10-11 08:40:28
Python 标准库:你身边藏着一把瑞士军刀

Python 标准库:你身边藏着一把瑞士军刀

我是陈默,一个正拼命上岸的码农。

你有没有干过这种事——

想处理 JSON,去 pip 装一个第三方库。想解析 URL,又去 pip 装一个。想生成随机数,再去 pip 装一个。

装了一圈回来发现,这些功能 Python 自带的就有。

Python 的标准库里有超过 200 个模块。很多人学了几年 Python,连一半都没碰过。

这就像你买了一把瑞士军刀,却只用它开啤酒瓶。

今天我带你快速过一遍,哪些标准库模块最值得你花时间掌握。


1. 文件和目录操作

你写代码,不可能不跟文件打交道。

os —— 操作系统交互:

import os# 获取当前目录print(os.getcwd())# 创建目录os.makedirs("new_folder", exist_ok=True)# 列出目录内容files = os.listdir(".")

pathlib —— 更优雅的路径操作:

from pathlib import Path# 创建路径对象p = Path("my_project/data")# 创建目录p.mkdir(parents=True, exist_ok=True)# 遍历所有 .py 文件for f in p.glob("**/*.py"):    print(f)

pathlib 比 os.path 好用太多。如果你还在拼路径字符串,赶紧换过来。

shutil —— 高级文件操作:

import shutil# 复制文件shutil.copy("source.txt", "dest.txt")# 复制整个目录shutil.copytree("old_dir", "new_dir")# 删除目录shutil.rmtree("unwanted_dir")

复制、移动、删除,一个模块全搞定。


2. 数据处理三剑客

日常开发中,你用得最多的就是数据转换和处理。

json —— JSON 解析:

import json# 字典转 JSON 字符串data = {"name": "陈默", "age": 28}json_str = json.dumps(data, ensure_ascii=False)# JSON 字符串转字典parsed = json.loads(json_str)# 直接读写文件with open("data.json", "w") as f:    json.dump(data, f, ensure_ascii=False)with open("data.json") as f:    loaded = json.load(f)

Web 开发、API 调用、配置文件,到处都是 JSON。这个模块你一定会用到。

collections —— 特殊容器:

from collections import Counter, defaultdict, OrderedDict# 统计词频words = ["python", "java", "python", "go", "python"]print(Counter(words))# Counter({'python': 3, 'java': 1, 'go': 1})# 默认值字典,不再怕 KeyErrord = defaultdict(list)d["fruits"].append("apple")# 不用手动判断 key 是否存在# 有序字典(Python 3.7+ 普通 dict 已经有序了)od = OrderedDict([("a", 1), ("b", 2)])

itertools —— 迭代器工具:

from itertools import combinations, chain, groupby# 组合for pair in combinations(["A", "B", "C"], 2):    print(pair)# ('A', 'B'), ('A', 'C'), ('B', 'C')# 拼接多个列表merged = list(chain([1, 2], [3, 4], [5]))# 分组data = sorted([("A", 1), ("A", 2), ("B", 3)], key=lambda x: x[0])for key, group in groupby(data, key=lambda x: x[0]):    print(key, list(group))

这三个模块组合起来,能帮你省掉大量的 for 循环和 if 判断。


3. 日期和时间

时间处理是编程里的高频需求。也是最容易出 bug 的地方。

datetime —— 日期时间:

from datetime import datetime, timedelta, date# 获取当前时间now = datetime.now()print(now.strftime("%Y-%m-%d %H:%M:%S"))# 日期计算tomorrow = date.today() + timedelta(days=1)last_week = datetime.now() - timedelta(weeks=1)# 字符串转日期parsed = datetime.strptime("2024-03-15", "%Y-%m-%d")# 日期转字符串formatted = parsed.strftime("%Y年%m月%d日")

日志记录、定时任务、数据分析,都离不开时间处理。

记住一个原则——永远用 datetime 模块处理时间,不要手动拼字符串。


4. 实用工具

还有一些模块,虽然不起眼,但关键时刻能救命。

re —— 正则表达式:

import re# 提取邮箱text = "联系我: chenmo@example.com 或 admin@test.cn"emails = re.findall(r'[\w.-]+@[\w.-]+\.\w+', text)# 替换文本clean = re.sub(r'\d+', '[数字]', "订单号12345已发货")# 验证手机号pattern = r'^1[3-9]\d{9}$'is_valid = bool(re.match(pattern, "13800138000"))

正则表达式很强大,但别过度使用。简单的字符串操作用 str 方法就够了。

logging —— 日志记录:

import logginglogging.basicConfig(    level=logging.INFO,    format='%(asctime)s - %(levelname)s - %(message)s')logging.debug("调试信息")logging.info("普通信息")logging.warning("警告信息")logging.error("错误信息")

别再 print 调试了。用 logging,你至少能控制日志级别和输出格式。

argparse —— 命令行参数解析:

import argparseparser = argparse.ArgumentParser(description="数据处理工具")parser.add_argument("--input", required=True, help="输入文件路径")parser.add_argument("--output", default="result.txt", help="输出文件路径")parser.add_argument("--verbose", action="store_true", help="详细输出")args = parser.parse_args()print(f"处理 {args.input},输出到 {args.output}")

写脚本的时候,命令行参数比硬编码路径专业一百倍。


最后

Python 标准库有一个设计哲学——batteries included(自带电池)。

意思是,你拿到 Python 就已经拥有了大部分常用工具。不需要额外安装任何东西。

回顾一下今天介绍的模块:

  1. 文件操作:pathlib、os、shutil
  2. 数据处理:json、collections、itertools
  3. 时间处理:datetime
  4. 实用工具:re、logging、argparse

这只是冰山一角。标准库里还有 http、socket、threading、unittest、csv 等大量模块等着你去探索。

我的建议是——下次遇到问题,先查查标准库里有没有现成的方案。大概率有。

今天就到这里。

我是陈默,我们下期再见。


如果你觉得这篇文章有帮助,欢迎关注我。我会持续分享 Python 学习的干货。

最新文章

随机文章