You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何向CSV数据库追加多行数据?列表写入CSV遇格式问题求助

关于CSV文件多行写入/追加的正确方法

核心结论

可以直接向CSV文件追加多行数据,无需先读取整个文件为列表;如果需要修改原有内容后再保存,则需要读取文件内容处理后重新写入。你的代码存在几处关键错误,导致写入失败,下面逐一纠正并给出正确实现。

你的代码问题分析

  1. CSV读取错误:你初始化了read_file = reader(opened_file)但未使用,直接list(opened_file)得到的是按行拆分的字符串列表,而非CSV解析后的结构化列表。正确做法是将read_file转为列表。
  2. 列表追加错误:examlist.append(rows)会把整个rows列表作为单个元素加入examlist,导致最终列表结构混乱,应该用extend方法追加多个行元素,或者循环append每一行。
  3. 写入方式错误:直接用文件对象的write方法写入列表会报错,因为write仅接受字符串。处理CSV文件应该使用csv.writer类完成结构化写入。

正确实现方法

方法1:直接追加多行到CSV(无需读取原文件)

如果只是想在现有CSV末尾追加新数据,不需要读取原内容,直接以追加模式打开文件,用csv.writer.writerows()写入多行:

import csv

# 要追加的多行数据
rows = [['a', 'b', 'c', 'd'], ['e', 'f', 'g', 'h']]

# 以追加模式打开文件,newline=''避免写入时出现空行
with open('example.csv', 'a', newline='', encoding='utf-8') as of:
    writer = csv.writer(of)
    writer.writerows(rows)

方法2:读取原文件内容,修改后重新写入(覆盖原文件)

如果需要修改原有内容(比如在中间插入数据、修改某一行),则需要先读取整个CSV为结构化列表,处理后再写入:

import csv

# 读取原CSV内容为结构化列表
with open('example.csv', 'r', encoding='utf-8') as opened_file:
    reader = csv.reader(opened_file)
    examlist = list(reader)

# 追加多行数据(用extend而非append)
rows = [['a', 'b', 'c', 'd'], ['e', 'f', 'g', 'h']]
examlist.extend(rows)

# 将修改后的列表写入CSV
with open('example.csv', 'w', newline='', encoding='utf-8') as of:
    writer = csv.writer(of)
    writer.writerows(examlist)

补充说明

  • 使用newline=''是CSV模块的推荐写法,可避免不同操作系统下写入时出现多余空行。
  • 如果你的CSV文件包含表头,处理时要注意保留表头,避免被覆盖或重复写入。

内容的提问来源于stack exchange,提问作者Dessert Storm

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.23 13:10:28