Python读写Csv文件
基础教学 1 min read

Python读写Csv文件

Blog Author

Python读写CSV文件

一、CSV 文件介绍

CSV(Comma-Separated Values,逗号分隔值)是一种轻量级的纯文本数据格式,广泛用于在不同平台、系统之间进行结构化数据交换

📌 CSV 文件的关键特征:

  1. 每行表示一条记录(Record)
  2. 字段(列)之间使用 分隔符(通常是逗号 ,)分开
  3. 文件是 纯文本,编码格式通常为 UTF-8 或 ASCII
  4. 各行字段数通常保持一致,字段顺序固定

📚 典型应用场景:

场景 示例
数据导入导出 Excel、MySQL、PostgreSQL 等可导出/导入 CSV
系统间交换 系统 A 生成,系统 B 消费
数据分析 数据科学中读取大型数据集
报表持久化 将报表数据写入 CSV 后备份或共享

优势:通用性强、体积小、易于处理 ❌ 劣势:不支持嵌套结构、不支持数据类型定义


二、将数据写入 CSV 文件(序列化为 CSV)

使用 csv.writer 写入 CSV

import csv
import random


with open('scores.csv', 'w', newline='', encoding='utf-8') as file:
    writer = csv.writer(file)
    writer.writerow(['姓名', '语文', '数学', '英语'])
    names = ['关羽', '张飞', '赵云', '马超', '黄忠']
    for name in names:
        row = [name] + [random.randint(60, 100) for _ in range(3)]
        writer.writerow(row)

参数详解:

参数 说明
'w' 写入模式,文件不存在则创建
newline='' 防止 Windows 下出现空行问题
encoding='utf-8' 保证中文写入无乱码

示例输出内容(scores.csv):

姓名,语文,数学,英语
关羽,93,87,78
张飞,78,66,99
...

三、自定义 CSV 写入格式

writer = csv.writer(file, delimiter='|', quoting=csv.QUOTE_ALL)

可选参数解析:

参数 含义
`delimiter=' '` 字段之间使用 ` ` 而非逗号
quoting=csv.QUOTE_ALL 所有字段都用双引号包裹,避免特殊符号引起歧义

输出效果:

"姓名"|"语文"|"数学"|"英语"
"赵云"|"85"|"92"|"76"
...

四、从 CSV 文件读取数据(反序列化为列表)

使用 csv.reader 读取 CSV:

import csv


with open('scores.csv', 'r', newline='', encoding='utf-8') as file:
    reader = csv.reader(file)
    for row in reader:
        print(f'第{reader.line_num}行:', row)

功能说明:

  • 每行被解析为 list
  • reader.line_num 返回当前行号(从 1 开始)

示例输出:

第1行: ['姓名', '语文', '数学', '英语']
第2行: ['关羽', '89', '90', '78']
...

设置定制分隔符:

reader = csv.reader(file, delimiter='|')

五、最佳实践与使用建议

✅ 推荐做法:

建议 理由
使用 with open(...) 自动关闭文件,避免资源泄露
使用 newline='' 跨平台避免空行问题
指定 encoding 保障跨平台兼容(特别是处理中文)
使用 writerow()/reader 处理行数据 提高代码清晰度与安全性

⚠️ 常见误区:

  • 不加 newline='' 会在 Windows 下多出空行
  • 写入中文但未指定编码,易导致乱码
  • 使用 writerow() 写入单个元素时未封装为列表会报错

六、pandas 中读写 CSV(高级方式推荐)

pandas 是数据分析的核心库之一,其 read_csvto_csv 方法极其强大:

import pandas as pd


df = pd.read_csv('scores.csv')
print(df.head())


df.to_csv('new_scores.csv', index=False, encoding='utf-8')

pandas.read_csv() 强大特性:

  • 自动识别列名与数据类型
  • 支持设置编码、分隔符、跳过行数等
  • 支持处理空值、缺失值、日期时间等高级特性
函数 用法
read_csv() 读取 CSV 并返回 DataFrame
to_csv() DataFrame 保存为 CSV 文件

DataFrame 是二维表结构,类似数据库中的表或 Excel 表格。


七、拓展应用场景举例

✅ 报表系统导出:

生成销售、库存、考试成绩等 CSV 文件供下载或备份

✅ 批量数据导入:

将业务系统中成批数据一次性导入数据库(如注册信息、产品信息)

✅ 数据清洗:

pandas.read_csv() 读取后执行空值处理、字段替换、类型转换等操作

✅ 与 Excel 无缝协作:

Excel 可直接打开 CSV;修改后另存为 CSV,Python 程序可继续读取处理


八、总结

能力 工具
原始读写 CSV csv 模块(轻量、标准库)
高效读写与分析 pandas.read_csv / to_csv(推荐)

核心建议:

  • 小文件读写首选 csv 模块,兼容性强、无需安装第三方库
  • 面向数据分析和清洗任务,建议直接使用 pandas
  • 写 CSV 时要明确编码与分隔符,避免跨系统兼容问题

学会 CSV 的读写和处理,是每个 Python 开发者和数据工作者必须掌握的技能之一。未来你可能还会接触 JSON、Excel、SQL 等数据格式,它们的处理方法虽有差异,但核心思想是一致的。