Python使用csv模块写入文件时如何仅在顶部显示一次列表头
问题原因
当前代码把csv.writer初始化、表头写入逻辑都放在了遍历数据的for循环内部,每循环一次就会执行一次写表头操作,最终导致每一行数据前都重复插入表头。
修正方法
做3处调整即可:
- 将
csv.writer实例化逻辑移到循环外,无需每次遍历都新建写入对象 - 将表头写入逻辑移到循环前,文件打开后仅执行一次表头写入
- 简化逐行写入逻辑,无需对单个元素套列表再用
writerows+zip处理,直接逐行写入即可,同时给文件打开参数加newline=''避免跨平台空行兼容问题
修正后的完整代码:
import csv import InvasionC with open('Data.csv', 'w', newline='') as f: writer = csv.writer(f) # 仅在文件开头写入一次表头 writer.writerow(['t1', 'sigma', 'P_calc', 'Vel']) for x in range(len(InvasionC.t1)): print(InvasionC.Isigma) # 压力相关调试打印 print(InvasionC.IX) # 速度相关调试打印 print(InvasionC.IVelprof) # 逐行写入对应数据 writer.writerow([ InvasionC.t1[x], InvasionC.Isigma[x], InvasionC.IX[x], InvasionC.IVelprof[x] ])
内容的提问来源于stack exchange,提问作者Wiz123
相关产品推荐
相关产品推荐

