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
相关产品推荐
相关产品推荐

