【Python】基础语法入门(十五)——标准库精选:提升效率的内置工具箱


🧰 说明 :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)

替代方案 :复杂时区处理可用第三方库 pytzzoneinfo(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. ossys:系统交互

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

✅ 用到了:pathlibargparsedatetime


下一步建议

  1. 探索更多标准库
    • collectionsdefaultdict, Counter, namedtuple
    • itertools:高效迭代工具(已在第十二篇介绍)
    • functoolslru_cache, wraps
  2. 在项目中替换手写逻辑
    • json 替代手动解析配置
    • pathlib 替代字符串拼接路径
  3. 阅读官方标准库文档,每周学一个新模块

🐍 "好的程序员知道标准库能做什么。"

善用标准库,是区分新手与熟手的重要标志!

继续前行,让 Python 的"电池"为你供电!

相关推荐
MARS_AI_2 小时前
大模型呼叫技术:客服行业的智能化演进与云蝠实践
人工智能·自然语言处理·交互·信息与通信·agi
阿蒙Amon2 小时前
JavaScript学习笔记:4.循环与迭代
javascript·笔记·学习
RoboWizard2 小时前
双接口移动固态硬盘兼容性怎么样?
人工智能·缓存·智能手机·电脑·金士顿
AI营销视界2 小时前
2025年GEO与AI营销平台:谁主全球沉浮?
人工智能
美狐美颜sdk2 小时前
美颜SDK算法工程师实践笔记:滤镜与特效模块的可维护性设计
人工智能·计算机视觉·第三方美颜sdk·视频美颜sdk·人脸美型sdk
IT·小灰灰2 小时前
AI学会理解物理法则:OpenAI Sora 2如何重塑视频生成新范式
人工智能·python·深度学习·机器学习·数据挖掘·音视频
测试人社区—小叶子2 小时前
低代码平台测试秘籍:OutSystems组件校验法则
运维·网络·人工智能·测试工具·低代码·自动化
微盛企微增长小知识2 小时前
2025企业微信服务商测评:头部服务商微盛AI·企微管家技术实力与落地效果解析
大数据·人工智能·企业微信
郑州光合科技余经理2 小时前
技术视角:海外版一站式同城生活服务平台源码解析
java·开发语言·uni-app·php·排序算法·objective-c·生活