做数据分析或者处理表格的时候,CSV 文件几乎是绕不开的存在。它结构简单,Excel 能打开,数据库能导入,连 Python 也能直接操作。关键是,不用装额外的包,Python 自带的标准库就支持读写 CSV。
为什么用标准库?
很多人一上来就想 pip install pandas,但如果你只是想快速导出几行数据,或者读个配置表,根本没必要引入大块头。标准库里的 csv 模块轻量又稳定,写脚本、做自动化任务刚刚好。
写一个简单的 CSV 文件
比如你有个程序要记录每天的气温,想存成 CSV 方便后续查看。可以直接这样写:
import csv
with open('temperature.csv', 'w', newline='') as file:
writer = csv.writer(file)
writer.writerow(['日期', '温度'])
writer.writerow(['2024-04-01', 23])
writer.writerow(['2024-04-02', 25])
writer.writerow(['2024-04-03', 22])
这里注意要加上 newline='',否则在 Windows 上可能会多出空行。writerow 接收一个列表,按顺序写入一行。
读取已有 CSV 数据
如果想看看之前记录的气温,可以反过来读:
import csv
with open('temperature.csv', 'r', encoding='utf-8') as file:
reader = csv.reader(file)
for row in reader:
print(row)
输出结果会是每行作为一个列表:
['日期', '温度']
['2024-04-01', '23']
['2024-04-02', '25']
['2024-04-03', '22']
数值会被读成字符串,需要计算的话记得转成 float 或 int。
用字典方式操作更直观
有时候字段多了,靠位置对应容易搞混。csv 还提供了 DictReader 和 DictWriter,可以用字段名来读写。
比如用字典写入:
import csv
with open('users.csv', 'w', newline='', encoding='utf-8') as file:
fieldnames = ['姓名', '年龄', '城市']
writer = csv.DictWriter(file, fieldnames=fieldnames)
writer.writeheader()
writer.writerow({'姓名': '张三', '年龄': 28, '城市': '北京'})
writer.writerow({'姓名': '李四', '年龄': 32, '城市': '上海'})
读的时候也一样清晰:
with open('users.csv', 'r', encoding='utf-8') as file:
reader = csv.DictReader(file)
for row in reader:
print(f"{row['姓名']} 来自 {row['城市']}")
这种方式特别适合处理表头固定的配置表或导出报表,代码一眼就能看懂。
下次再碰到要生成个简单表格,或者解析个数据清单,先试试标准库的 csv 模块,省事又可靠。