Python CSV 读写操作指南:从基础遍历到字典写入

Elena
Elena
发布时间:2026-10-11| 2人浏览过
原创

本文总结 Python 中处理 CSV 文件的核心方法。通过 csv.reader 遍历读取数据,利用 csv.writer 进行列表写入,并掌握 csv.DictWriter 处理字典数据的技巧。重点解析写入时 newline='' 的作用、覆盖与追加模式的区别,以及常见空行问题的解决方案,帮助开发者高效处理结构化数据。

读取 CSV 数据

在 Python 中处理 CSV 文件时,csv.reader 是最常用的读取工具。它接受一个文件对象或列表作为输入,并返回一个可迭代的对象。这意味着我们需要通过循环(如 for 循环)来逐行获取数据。每一行数据在读取后会被转换为一个列表(list),方便后续处理。

以下是读取 CSV 文件的基本示例:

import csv

path = "C:\\Users\\A539\\Desktop\\1.csv"
with open(path, 'r') as fp:
    lines = csv.reader(fp)
    for line in lines:
        print(line)
        
    print(type(line))

上述代码展示了如何打开文件、创建 reader 对象并遍历每一行。注意,type(line) 的输出将显示为 <class 'list'>,这确认了每行数据是以列表形式存在的。

写入 CSV 数据

写入 CSV 文件主要涉及两个类:csv.writer 和 csv.DictWriter。在使用 csv.writer 时,有一个关键参数需要注意:newline=''。如果不添加此参数,在某些操作系统(如 Windows)上,写入的每一行之间可能会产生额外的空行。

使用 csv.writer 写入列表

csv.writer 适用于将列表数据写入 CSV 文件。它可以写入单行或多行数据。

import csv

list1 = [100, 200, 300, 400, 500]
list2 = [[500, 600, 700, 800, 900],
         [50, 60, 70, 80, 90]]

with open(path, 'w',newline='')as fp:
    writer = csv.writer(fp)
    # 写入一行
    writer.writerow(list1)
    # 写入多行
    writer.writerows(list2)

在上面的代码中,writerow 用于写入单个列表,而 writerows 用于写入包含多个列表的二维列表。这种模式适合结构简单的数据写入。

使用 csv.DictWriter 写入字典

当数据以字典形式存储时,csv.DictWriter 更加便捷。它需要指定字段名(fieldnames),通常对应字典的键。

import csv

head = ['aa', 'bb', 'cc', 'dd', 'ee']

lines = [
        {'aa': 10 , 'bb': 20, 'cc': 30, 'dd': 40, 'ee': 50},
        {'aa': 100, 'bb': 200, 'cc': 300, 'dd': 400, 'ee': 500},
        {'aa': 1000, 'bb': 2000, 'cc': 3000, 'dd': 4000, 'ee': 5000},
        {'aa': 10000, 'bb': 20000, 'cc': 30000, 'dd': 40000, 'ee': 50000},
    ]

with open(path, 'w',newline='')as fp:
    dictwriter = csv.DictWriter(fp, head)
    dictwriter.writeheader()

注意,在使用 DictWriter 时,必须先调用 writeheader() 写入表头,然后再写入数据行。否则,第一行数据可能会被误认为是表头,或者导致列名不匹配。

with open(path, 'w', newline='')as fp:
    dictwriter = csv.DictWriter(fp, head)
    dictwriter.writeheader()
    dictwriter.writerows(lines)

处理覆盖与追加模式

默认情况下,使用 'w' 模式打开文件会覆盖原有内容。如果希望在不覆盖原有数据的情况下添加新内容,可以使用 'a+' 模式。然而,在使用 DictWriter 时,如果文件已存在且包含表头,再次调用 writeheader() 可能会导致表头重复写入。

因此,在追加模式下,通常只调用 writerows 来添加新数据行,而跳过 writeheader()。以下是追加模式的示例:

with open(path, 'a+', newline='')as fp:
    dictwriter = csv.DictWriter(fp, head)
    dictwriter.writeheader()
    dictwriter.writerows(lines)

在实际应用中,建议先检查文件是否为空,再决定是否写入表头,以避免数据冗余。

总结

Python 的 csv 模块提供了强大的功能来处理 CSV 文件。通过合理使用 csv.reader、csv.writer 和 csv.DictWriter,可以高效地读取和写入数据。注意 newline='' 的使用以及覆盖与追加模式的区别,可以避免常见的数据格式问题。

以上就是 Python CSV 读写操作的详细内容,更多关于 Python 数据处理、CSV 模块用法及文件操作技巧的资料请关注本站其它相关文章!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。