这套课程按知识依赖排列。本篇的前置知识是:第 11、13、30 篇。学完后,你应该能够按表头字段读写简单二维数据。
本篇要解决的问题
本篇只处理“使用 CSV 读写表格数据”这一件事。示例基于 Python 3.14.6,在 macOS 环境核验;除明确标注的终端命令外,代码本身只使用 Python 标准能力。
先看清一个容易误解的细节
DictReader 使用第一行表头作为键,把后续每一行映射成字典。CSV 单元格读入后默认都是字符串。
核心概念
- 使用
newline=""让csv模块正确处理换行。 - 字段顺序由
fieldnames决定,字典键需要与字段名一致。 - 复杂嵌套数据更适合 JSON,规则二维表更适合 CSV。
跟着示例运行
把下面代码保存到本课脚本并运行:
import csv
writer_file = open("scores.csv", "w", encoding="utf-8", newline="")
writer = csv.DictWriter(writer_file, fieldnames=["name", "score"])
writer.writeheader()
writer.writerow({"name": "小郑", "score": 95})
writer_file.close()
reader_file = open("scores.csv", "r", encoding="utf-8", newline="")
for row in csv.DictReader(reader_file):
print(row["name"], row["score"])
reader_file.close()
预期结果:
小郑 95
输出中包含环境路径、集合元素或日志格式时,具体文字和顺序可能随本机环境变化;判断是否成功应以本篇说明的关键结果为准。
按执行顺序拆开看
DictWriter按fieldnames写表头,再按同一字段顺序取出字典值形成数据行。DictReader读取表头,并把每行单元格映射为字符串值的字典。
初学者容易混淆的地方
- 假设分数字段读取后自动成为整数,CSV 没有这种类型信息。
- 在 macOS 以外环境忽略
newline=""可能出现额外空行;统一交给csv模块管理换行。
练习
- 写入三名学习者的课程和分数。
- 读取 CSV 后把分数字符串转换为整数。
练习应先独立完成,再通过增加 print 输出或检查文件内容观察中间状态。当前课程尚未讲到的能力,不要求提前搜索复杂写法。
本篇边界
本篇目标是按表头字段读写简单二维数据。没有展开的高级机制会放到后续课程;先确保能够解释示例中每一行代码,再进入下一篇。
相关文章
01|Python 程序从源码到输出经历了什么
面向按顺序学习 Python 的初学者,本篇在零基础上,帮助读者理解源代码、解释器和输出之间的关系。
02|在 macOS 安装并确认 Python 3 环境
面向按顺序学习 Python 的初学者,本篇在第 01 篇知识上,帮助读者在 macOS 中确认 Python 3.14 和 pip 是否可用。
03|交互式解释器和 Python 脚本怎么选择
面向按顺序学习 Python 的初学者,本篇在第 02 篇知识上,帮助读者根据任务选择 REPL 或 `.py` 脚本。
04|建立第一个 Python 项目目录
面向按顺序学习 Python 的初学者,本篇在第 03 篇知识上,帮助读者理解当前目录并正确运行项目脚本。

