如何使用 Python 读取和写入 CSV 文件?

在Python中,处理CSV文件是一项常见的任务,通常用于数据交换和数据存储。

Python的标准库csv模块提供了一种方便的方式来读取和写入CSV文件。

下面我将详细介绍如何使用Python的csv模块来读取和写入CSV文件,并提供一些实际开发中的建议和注意事项。

读取CSV文件

使用csv模块读取CSV文件的基本步骤如下:

  1. 打开CSV文件。
  2. 创建一个csv.reader对象。
  3. 遍历csv.reader对象以读取每一行数据。

以下是一个示例代码:

复制代码
import csv

# 打开CSV文件
with open('example.csv', mode='r', encoding='utf-8') as file:
    # 创建一个csv.reader对象
    csv_reader = csv.reader(file)
    
    # 遍历每一行数据
    for row in csv_reader:
        print(row)
代码解释:
  • open('example.csv', mode='r', encoding='utf-8'):以只读模式打开名为example.csv的文件,并指定编码为UTF-8。
  • csv.reader(file):创建一个csv.reader对象,用于读取文件内容。
  • for row in csv_reader:遍历csv.reader对象,每次迭代返回一行数据,数据以列表形式表示。

写入CSV文件

使用csv模块写入CSV文件的基本步骤如下:

  1. 打开CSV文件。
  2. 创建一个csv.writer对象。
  3. 使用writerowwriterows方法写入数据。

以下是一个示例代码:

复制代码
import csv

# 数据列表
data = [
    ['Name', 'Age', 'City'],
    ['Alice', '30', 'New York'],
    ['Bob', '25', 'Los Angeles']
]

# 打开CSV文件
with open('output.csv', mode='w', encoding='utf-8', newline='') as file:
    # 创建一个csv.writer对象
    csv_writer = csv.writer(file)
    
    # 写入数据
    for row in data:
        csv_writer.writerow(row)
代码解释:
  • open('output.csv', mode='w', encoding='utf-8', newline=''):以写入模式打开名为output.csv的文件,并指定编码为UTF-8。newline=''参数用于防止在不同操作系统中出现额外的空行。
  • csv.writer(file):创建一个csv.writer对象,用于写入文件内容。
  • csv_writer.writerow(row):将每一行数据写入CSV文件。

实际开发中的建议和注意事项

  1. 处理特殊字符 :CSV文件中的数据可能包含逗号、引号等特殊字符。csv模块会自动处理这些字符,但在读取和写入时仍需注意数据的格式。

  2. 编码问题:在处理CSV文件时,确保文件的编码与代码中指定的编码一致,以避免乱码问题。

  3. 性能考虑 :对于大型CSV文件,可以考虑使用pandas库,它提供了更高效的CSV文件处理功能。

  4. 错误处理:在实际开发中,应添加错误处理机制,以应对文件不存在、权限不足等问题。

以下是一个带有错误处理的示例代码:

复制代码
import csv

try:
    with open('example.csv', mode='r', encoding='utf-8') as file:
        csv_reader = csv.reader(file)
        for row in csv_reader:
            print(row)
except FileNotFoundError:
    print("文件未找到")
except PermissionError:
    print("权限不足,无法读取文件")
except Exception as e:
    print(f"发生错误: {e}")

高级用法

使用DictReaderDictWriter

csv.DictReaderDictWriter允许你以字典的形式读取和写入CSV文件,这样可以更方便地访问列数据。

以下是一个示例代码:

复制代码
import csv

# 读取CSV文件
with open('example.csv', mode='r', encoding='utf-8') as file:
    csv_reader = csv.DictReader(file)
    for row in csv_reader:
        print(row['Name'], row['Age'], row['City'])

# 写入CSV文件
data = [
    {'Name': 'Alice', 'Age': '30', 'City': 'New York'},
    {'Name': 'Bob', 'Age': '25', 'City': 'Los Angeles'}
]

with open('output.csv', mode='w', encoding='utf-8', newline='') as file:
    fieldnames = ['Name', 'Age', 'City']
    csv_writer = csv.DictWriter(file, fieldnames=fieldnames)
    csv_writer.writeheader()
    for row in data:
        csv_writer.writerow(row)
代码解释:
  • csv.DictReader(file):创建一个csv.DictReader对象,每一行数据以字典形式表示,键为列名。
  • csv.DictWriter(file, fieldnames=fieldnames):创建一个csv.DictWriter对象,指定列名为fieldnames
  • csv_writer.writeheader():写入列名作为CSV文件的第一行。

使用Python的csv模块可以方便地读取和写入CSV文件。

在实际开发中,应注意处理特殊字符、编码问题、性能考虑和错误处理。对于更复杂的需求,可以考虑使用pandas库来提高处理效率。

通过合理使用csv.DictReadercsv.DictWriter,可以更方便地访问和操作CSV文件中的数据。

相关推荐
临沂GEO3 小时前
GEO搜索优化科普|正规地理位置流量运营入门指南
大数据·人工智能·python·流量运营
大模型码小白3 小时前
Spring AI Tool 实现自然语言操作 MySQL 数据库详解
服务器·开发语言·数据库·人工智能·python·mysql·spring
荷蒲4 小时前
【小白量化Qbuddy】利用AI学习中文Python
人工智能·python·学习
数据狐(Datafox)6 小时前
京东商品列表API技术解析与落地应用(含标准 JSON 示例)
java·大数据·前端·人工智能·python·数据分析·json
量化吞吐机6 小时前
2026年下半年手工交易规则走向量化表达,产品该先接住哪一步
人工智能·python
Metaphor6926 小时前
使用 Python 读取和删除 Excel 文件属性
python·excel
迷迭香yy7 小时前
Python构建转融券多空识别系统从接口到因子的全流程 IG50免费开源股票数据API接口
开发语言·python·开源
月光船幽幽8 小时前
真实即粗糙,光滑是伪造
人工智能·python
一次旅行8 小时前
Attention机制从数学到工程:拆解缩放点积+多头注意力|附可运行PyTorch实现与踩坑指南
人工智能·pytorch·python
泡干脆面就番茄8 小时前
NumPy 科学计算完全指南:从数组创建到广播机制
python·numpy