Python中如何将列表作为新行追加到CSV文件而非最后一列?
解决CSV追加列表为新行而非列的问题
你当前代码的问题出在使用了zip()函数,它会把三个列表对应索引的元素打包成元组,比如生成的rows是[('Mean', 'Variance', 'SD'), (mean, variance, std)],写入CSV后自然会变成两列,而非你期望的三个独立行。
修正方案
直接将三个列表作为独立行存入一个大列表,然后写入CSV即可:
# 假设mean、variance、std已提前定义 row1 = ['Mean', mean] row2 = ["Variance", variance] row3 = ["SD", std] # 把每个要写入的行放到一个列表里 all_rows = [row1, row2, row3] from csv import writer with open(r'E:\chrome dlds\null - Sheet1.csv', "a", newline='') as f: csv_writer = writer(f) # 避免变量名和导入的writer类重名 csv_writer.writerows(all_rows) # 一次性写入所有行 # 读取验证(注意要先导入csv模块) import csv with open(r'E:\chrome dlds\null - Sheet1.csv', mode='r') as file: reader = csv.reader(file) for line in reader: print(line)
关键说明
- 不要用
zip():它的作用是按索引合并多个序列,不是把多个序列作为独立行 - 使用
writerows():可以一次性写入多行,比循环调用writerow()更高效 - 变量名避免冲突:原代码里把实例命名为
writer,会覆盖导入的csv.writer类,改用csv_writer这类命名更安全 - 读取时补全导入:原代码读取部分没导入
csv模块,运行会报错,需要补上import csv
内容的提问来源于stack exchange,提问作者AlphaBoom10
相关产品推荐
相关产品推荐

