读写文件:with 是标准姿势
with open('notes.txt', 'w', encoding='utf-8') as f:
f.write('今天学完了 Python 四章\n')
with open('notes.txt', 'r', encoding='utf-8') as f:
for line in f:
print(line.strip())
离开 with 代码块,文件自动关闭——哪怕中间抛了异常。永远写 encoding='utf-8',Windows 下默认编码是坑。
异常处理:优雅地接住错误
def parse_score(text):
try:
return int(text)
except ValueError:
print(f'「{text}」不是合法分数,按 0 分处理')
return 0
finally:
print('(本次解析结束)')
原则:精确捕获、给出出路。except: 后面裸 pass 是大忌——真正的错误会被悄悄吞掉。
实战小脚本:统计学习笔记
把本章的知识全部用上——统计 content 目录里每条学习线的章节数,并导出 JSON:
from pathlib import Path
import json
root = Path('content')
result = {}
for track_dir in root.iterdir():
if track_dir.is_dir():
md_files = sorted(track_dir.glob('*.md'))
result[track_dir.name] = len(md_files)
print(json.dumps(result, ensure_ascii=False, indent=2))
# {"ai": 4, "frontend": 4, "python": 4, "cs": 3}
Path('stats.json').write_text(
json.dumps(result, ensure_ascii=False, indent=2), encoding='utf-8'
)
短短十行用到了:pathlib 遍历目录、glob 匹配文件、json 序列化、dict 组织数据——这就是 Python 的日常形态。
虚拟环境:装库不污染全局
python -m venv .venv # 创建
source .venv/bin/activate # 激活(Windows 用 .venv\Scripts\activate)
pip install requests # 装在项目自己的环境里
💡 练习任务:把上面的统计脚本扩展成「统计每条线总共多少道测验题」——提示:解析 frontmatter 可以用第三方库 python-frontmatter。