Python中更新字典添加Email后,CSV文件未显示该列求助
解决CSV DictWriter不生成新增列的问题
问题核心是没有给DictWriter指定包含新增字段的fieldnames——默认情况下,DictWriter只会沿用原DictReader读取到的字段名,不会自动识别你后续添加的新键。
正确实现代码
import csv # 读取原CSV文件 with open('people.csv', 'r', newline='', encoding='utf-8') as infile: reader = csv.DictReader(infile) # 基于原字段名列表,添加新的Email字段 fieldnames = list(reader.fieldnames) fieldnames.append('Email') # 写入新CSV文件 with open('new_people.csv', 'w', newline='', encoding='utf-8') as outfile: writer = csv.DictWriter(outfile, fieldnames=fieldnames) writer.writeheader() # 必须写入表头,否则新列不会在文件中显示 for row in reader: row['Email'] = 'null' writer.writerow(row)
关键注意事项
- 显式更新
fieldnames:必须把原CSV的字段名复制出来,追加新增的Email后传给DictWriter,否则它只会处理原有的字段 - 不能省略
writer.writeheader():跳过这一步会导致新文件缺失表头,新增的Email列自然不会出现在文件里 - 编码与换行符:使用
utf-8避免乱码,newline=''确保跨平台下换行符格式正确
内容的提问来源于stack exchange,提问作者MarkZ
相关产品推荐
相关产品推荐

