Skip to main content
复盘日:恭喜你完成了第二周的学习!今天是巩固和总结的日子。我们将回顾过去 6 天学到的所有 Python 知识,整理成速查表,并记录遇到的问题和解决方案。今天不只是复习,而是要彻底理解 “如何将 Python 知识应用到实际运维场景”“如何设计可维护的 Python 脚本” 以及 “如何为下一阶段的 FastAPI 学习做好准备”

复盘内容 | Review

Day 08 - 基础补漏
  • 虚拟环境:python3 -m venv .venvsource .venv/bin/activate
  • 依赖管理:pip install packagepip freeze > requirements.txt
  • 类型注解:def func(param: type) -> return_type:
  • f-string:f"Hello {name}"(推荐使用)
  • 上下文管理器:with open() 自动关闭文件
  • 列表推导式:[x for x in list if condition]
Day 09 - 数据结构与装饰器
  • 字典操作:get()setdefault()update()
  • 字典推导式:{k: v for k, v in data}
  • 装饰器:@decorator 扩展函数功能
  • 异常处理:try-except-finally、不要写裸露的 except:
  • 上下文管理器:@contextmanager 自动资源管理
Day 10 - 文件处理与正则
  • JSON:json.load()json.dump()json.loads()json.dumps()
  • YAML:yaml.safe_load()yaml.dump()(需要安装 PyYAML)
  • 正则表达式:re.search()re.findall()re.sub()
  • 常用模式:\d+(数字)、\w+(单词)、.*?(非贪婪匹配)
Day 11 - subprocess 模块
  • subprocess.run():执行命令并等待完成
  • 参数:capture_output=Truetext=Truecheck=Truetimeout=秒数
  • 安全规范:使用列表传参,避免 Shell 注入
  • subprocess.Popen():实时处理输出(高级用法)
Day 12 - 数据库操作
  • PyMySQL:轻量级 MySQL 客户端
  • 连接管理:使用上下文管理器确保连接关闭
  • 参数化查询:cursor.execute(sql, (param,)) 防止 SQL 注入
  • 事务控制:commit() 提交、rollback() 回滚
Day 13 - 综合实战
  • 项目整合:文件处理 + 正则 + subprocess + 数据库
  • 模块化设计:功能拆分成独立函数
  • 配置管理:集中管理配置
  • 错误处理:完善的异常处理机制

复盘产出 | Output

1. 第二阶段速查表

Python 环境管理

# 创建虚拟环境
python3 -m venv .venv
source .venv/bin/activate

# 依赖管理
pip install package
pip freeze > requirements.txt
pip install -r requirements.txt

文件处理

# JSON
import json
data = json.load(open("file.json"))
json.dump(data, open("file.json", "w"), indent=4)

# YAML
import yaml
data = yaml.safe_load(open("file.yaml"))

正则表达式

import re
match = re.search(r'pattern', text)
results = re.findall(r'pattern', text)
new_text = re.sub(r'pattern', 'replacement', text)

subprocess

import subprocess
result = subprocess.run(
    ["cmd", "arg"],
    capture_output=True,
    text=True,
    check=True
)
print(result.stdout)

数据库操作

import pymysql
conn = pymysql.connect(**config)
cursor = conn.cursor()
cursor.execute("SELECT * FROM table WHERE id=%s", (1,))
result = cursor.fetchone()
conn.commit()
conn.close()

装饰器

from functools import wraps

def decorator(func):
    @wraps(func)
    def wrapper(*args, **kwargs):
        # 前置处理
        result = func(*args, **kwargs)
        # 后置处理
        return result
    return wrapper

2. 常见问题与解决方案

问题python3: command not found解决方案
  • macOS:brew install python3
  • Linux:sudo apt install python3 python3-pip python3-venv
  • Windows:使用 WSL 或安装 Python 官方版本
问题:激活虚拟环境后,which python 还是系统路径解决方案:检查 .venv/bin/activate 文件是否存在,重新创建虚拟环境
问题UnicodeDecodeError 读取文件时编码错误解决方案:指定编码 open("file.txt", "r", encoding="utf-8")问题:YAML 文件解析失败解决方案:确保安装了 PyYAML:pip install pyyaml,使用 yaml.safe_load() 而不是 yaml.load()
问题FileNotFoundError 命令不存在解决方案:检查命令路径,使用完整路径或确保命令在 PATH 中问题:命令执行超时解决方案:增加 timeout 参数或优化命令逻辑
问题pymysql.err.OperationalError: (2003, "Can't connect to MySQL server")解决方案
  • 检查 MySQL 服务是否运行
  • 检查连接配置(host、port、user、password)
  • 检查防火墙设置
问题:连接泄漏解决方案:始终使用上下文管理器 with db_cursor() as cursor: 确保连接关闭

3. 项目重构示例

原始版本
def calculate_memory(total, usage):
    return f"Usage: {usage / total:.2%}"
优化版本(应用 Week 2 学到的知识):
from typing import Tuple

def calculate_memory(total: int, usage: float) -> str:
    """
    计算内存使用率
    
    参数:
        total: 总内存(MB)
        usage: 已使用内存(MB)
    
    返回:
        格式化的使用率字符串
    """
    if total <= 0:
        raise ValueError("总内存必须大于 0")
    
    percentage = usage / total
    return f"Memory Usage: {percentage:.2%}"

# 使用装饰器添加日志
@log_execution
def get_memory_info():
    total = 8192
    usage = 4096
    return calculate_memory(total, usage)
改进点
  • 添加了类型注解,提高代码可读性
  • 添加了文档字符串,说明函数用途
  • 添加了参数验证,提高健壮性
  • 使用装饰器扩展功能

🏆 阶段性总结

恭喜你!你已经完成了 Project Team 基础训练营的第二阶段。
到这里你已经掌握了:
  • ✅ Python 虚拟环境和依赖管理
  • ✅ Python 核心语法(类型注解、f-string、列表推导式)
  • ✅ 数据结构操作(字典、列表推导式)
  • ✅ 装饰器和异常处理
  • ✅ 文件处理(JSON、YAML、CSV)
  • ✅ 正则表达式
  • ✅ subprocess 系统调用
  • ✅ PyMySQL 数据库操作
  • ✅ 综合项目开发能力
下一阶段(Week 3)将学习:
  • FastAPI 框架基础
  • RESTful API 设计
  • 数据库 ORM(SQLAlchemy)
  • API 文档自动生成
  • 中间件和依赖注入

学习建议

巩固基础

  • 复习本周的所有代码示例
  • 完成所有拓展任务
  • 整理个人知识库和速查表
  • 记录遇到的问题和解决方案

实践项目

  • 尝试重构之前的 Shell 脚本为 Python
  • 开发自己的监控工具
  • 练习数据库操作和文件处理
  • 熟悉装饰器和异常处理

上一天: 综合实战

Day 13 | 第二阶段综合实战

下一周: FastAPI 框架

第 03 周 | FastAPI 框架实战