Python csv模块是轻量标准工具,不解析数据类型、无样式支持但稳定可控;读写需指定newline=''防空行,自动处理转义,DictReader/Writer适配表头,注意编码、换行符及手动类型转换。
Python 的 csv 模块是处理 CSV 文件最轻量、最标准的工具,无需额外安装,适合结构清晰的表格数据读写。它不解析数据类型(所有字段默认为字符串),也不支持 Excel 公式或样式,但胜在稳定、可控、无依赖。
适用于简单、规整的 CSV 文件(如导出的数据库表、日志统计结果)。注意文件需以文本模式打开,并指定 newline='' 避免 Windows 下空行问题。
csv.reader(f) 返回可迭代对象,每行是字符串列表next(reader) 跳过,或配合 csv.DictReader 直接映射为字典"Smith, John"),reader 能自动解析写入前先创建 writer 对象,再逐行调用 writer.writerow() 或批量用 writer.writerows()。
newline='' 参数(尤其在 Windows 上),否则可能多出空行writer 默认自动加双引号并转义,无需手动处理dialect 或参数控制,例如 delimiter=';' 或 quoting=csv.QUOTE_ALL
当 CSV 含明确列名时,字典方式更直观,避免靠索引取值出错。
DictReader(f) 自动把首行当 key,后续每行返回 OrderedDict(Python 3.7+ 普通 dict 也保持顺序)DictWriter(f, fieldnames=['name', 'age']) 需显式传入字段名列表;写入前必须调用 writeheader() 输出表头restval 和 extrasaction 控制行为CSV 看似简单,实操中容易踩坑:
encoding='utf-8-sig'(Windows 记事本保存的 CSV 常带 BOM)newline='' 打开csv 模块不做类型推断,需手动转换,如 int(row[1]) 或 float
(row[2])
list(reader) 一次性加载,应边读边处理;超大数据建议改用 pandas.read_csv(chunksize=...)