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

CSV文件每行末尾追加内容及成绩CSV生成的写入问题

解决CSV文件生成与写入的问题

嘿,看来你在CSV文件的写入环节卡壳了!别担心,问题出在你找错了方法名——Python的csv模块里根本没有writecolumns()这个方法,正确的应该是writerow()(写入单行)或者writerows()(批量写入多行)。我给你整理一套完整的实现方案,从生成随机数据到写入CSV一步到位:

完整实现步骤

1. 导入必要的模块

我们需要用csv处理文件,random生成随机成绩,还可以用faker生成真实感的随机姓名(如果没装的话,先跑pip install faker安装,嫌麻烦的话用自定义姓名列表也行)。

import csv
import random
from faker import Faker

2. 配置基础参数

定义表头、数据行数、成绩范围:

# 初始化Faker生成随机中文姓名(要英文姓名就去掉'zh_CN'参数)
fake = Faker('zh_CN')

# 定义CSV表头
header = ["姓名", "成绩1", "成绩2", "成绩3", "成绩4", "成绩5", "成绩6", "成绩7", "成绩8", "平均分"]

# 要生成的数据行数
row_count = 20

# 成绩的取值范围(0-100分)
score_min, score_max = 0, 100

3. 生成所有数据行

循环生成20行数据,每行包含随机姓名、8个随机成绩,以及计算好的平均分:

data_rows = []
for _ in range(row_count):
    # 生成随机姓名
    name = fake.name()
    # 生成8个随机成绩
    scores = [random.randint(score_min, score_max) for _ in range(8)]
    # 计算平均分(保留2位小数)
    average_score = round(sum(scores) / len(scores), 2)
    # 把姓名、成绩、平均分整合成一行
    row = [name] + scores + [average_score]
    data_rows.append(row)

4. 写入CSV文件

用csv.writer来写入,先写表头,再写所有数据行:

# 打开文件('w'表示写入模式,encoding='utf-8-sig'避免中文乱码)
with open('student_scores.csv', 'w', newline='', encoding='utf-8-sig') as csvfile:
    # 创建writer对象
    writer = csv.writer(csvfile)
    # 写入表头
    writer.writerow(header)
    # 批量写入所有数据行
    writer.writerows(data_rows)

print("CSV文件生成完成!")

关于你提到的“追加写入”场景

如果是需要往已有的CSV文件末尾追加数据,只需要把打开模式改成'a',并且注意如果文件已经有表头,就不要再重复写表头了:

# 追加数据到已有文件
with open('student_scores.csv', 'a', newline='', encoding='utf-8-sig') as csvfile:
    writer = csv.writer(csvfile)
    # 直接写入新的数据行(不要写表头)
    writer.writerows(data_rows)

关键注意点

  • 记得用newline=''参数,避免CSV文件出现多余的空行
  • 中文编码用utf-8-sig,防止Excel打开时出现乱码
  • csv.writer的核心方法是writerow()(单条数据)和writerows()(多条数据),没有writecolumns()哦!

内容的提问来源于stack exchange,提问作者Angel Torres

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:48:31